目录
中断
线程池
锁
=====
======
======
======
======
======
======
======
======
======
中断是通过调用Thread.interrupt()方法来做的. 这个方法通过修改了被调用线程的中断状态来告知那个线程, 说它被中断了. 对于非阻塞中的线程, 只是改变了中断状态, 即Thread.isInterrupted()将返回true; 对于可取消的阻塞状态中的线程, 比如等待在这些函数上的线程, Thread.sleep(), Object.wait(), Thread.join(), 这个线程收到中断信号后, 会抛出InterruptedException, 同时会把中断状态置回为false.调用该方法结束之后, 中断状态会变成false
参考1
在一些场景中,也需要要设置一个不同的最小线程数。比如当一个系统最大需要同时处理2000个任务,而平均任务数量只是20个情况下,就需要将最小线程数设置成20,而不是等于其最大线程数2000。此时如果还是将最小线程数设置的等于最大线程数的话,那么闲置线程(Idle Thread)占用的资源就比较可观了,尤其是当使用了ThreadLocal类型的变量时,会在每个线程的context中存储该变量的副本。
ReentrantLock是通过内部的Sync变量实现其锁机制(分为公平和非公平,都是继承自AbstractQueuedSynchronizer),AbstractQueuedSynchronizer提供了状态位+队列的机制实现了锁机制
新闻热点
疑难解答