大厂P7 Java程序员高频面试题-8
Posted 四猿外
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大厂P7 Java程序员高频面试题-8相关的知识,希望对你有一定的参考价值。
Thread 类中的yield 方法有什么作用?
使当前线程从执行状态(运行状态) 变为可执行态(就绪状态) 。
当前线程到了就绪状态,那么接下来哪个线程会从就绪状态变成执行状态呢? 可能是当前线程,也可能是其他线程, 看系统的分配了。
Java 中ConcurrentHashMap 的并发度是什么?
ConcurrentHashMap 把实际map 划分成若干部分来实现它的可扩展性和线程安全。这种划分是使用并发度获得的, 它是ConcurrentHashMap 类构造函数的一个可选参数,默认值为16,这样在多线程情况下就能避免争用。
在JDK8 后, 它摒弃了Segment(锁段) 的概念, 而是启用了一种全新的方式实现,利用CAS 算法。同时加入了更多的辅助变量来提高并发度,具体内容还是查看源码吧。
Java 中Semaphore 是什么?
Java 中的Semaphore 是一种新的同步类,它是一个计数信号。从概念上讲, 从概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个acquire(),然后再获取该许可。每个release()添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。信号量常常用于多线程的代码中,比如数据库连接池。
Java 线程池中submit() 和execute()方法有什么区别?
两个方法都可以向线程池提交任务,execute()方法的返回类型是void,它定义在Executor 接口中。
而submit()方法可以返回持有计算结果的Future 对象,它定义在ExecutorService 接口中,它扩展了Executor 接口,其它线程池类像ThreadPoolExecutor 和ScheduledThreadPoolExecutor 都有这些方法。
什么是阻塞式方法?
阻塞式方法是指程序会一直等待该方法完成期间不做其他事情, ServerSocket 的accept()方法就是一直等待客户端连接。这里的阻塞是指调用结果返回之前,当前线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在任务完成前就返回。
Java 中的ReadWriteLock 是什么?
读写锁是用来提升并发程序性能的锁分离技术的成果。
以上是关于大厂P7 Java程序员高频面试题-8的主要内容,如果未能解决你的问题,请参考以下文章