线程相关

一个线程被唤醒不代表立即获取了对象的monitor,只有等调用完notify()或者notifyAll()并退出synchronized块,释放对象锁后,其余线程才可获得锁执行

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

Java并发编程相关

线程同步工具类:
CyclicBarrier :大家彼此等待,大家集合好后才统一出发,分散活动后又在指定地点集合碰面,
CountDownLatch:类似倒计时计数器,CountDownLatch类的countDown方法将计数器减1,当计数器到0时,所有等待者开始执行

阻塞队列:
使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒(不需要我们编写代码去唤醒)。这样提供了极大的方便性。
阻塞队列使用最经典的场景就是socket客户端数据的读取和解析,读取数据的线程不断将数据放入队列,然后解析线程不断从队列取数据解析。还有其他类似的场景,只要符合生产者-消费者模型的都可以使用阻塞队列
示例示例代码

Servlet 单例多线程

原文地址:https://www.cnblogs.com/luleiitlife/p/8545083.html