声明一个CPU密集型线程池,保证所有任务都能被执行完
怎么声明一个线程池,使它能够执行大量CPU密集型操作,又不会无限创建新线程,又能保证所有的任务都能被执行完成呢?
怎么声明一个线程池,使它能够执行大量CPU密集型操作,又不会无限创建新线程,又能保证所有的任务都能被执行完成呢?
InheritableThreadLocal可将父线程中存储的值带到子线程中。
简介 众所周知,synchron […]
本文介绍JDK中并发工具类的各种同步器,倒计时门闩(countdown latch)、同步屏障(cyclic barrier)、交换器(exchanger)、信号量(semaphore)以及phaser同步器。
如果子线程中要进行比较耗时的运算,并且希望主线程等待子线程执行完毕之后再执行,那么就可以使用join()方法.
管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据。一个线程发送数据到输出管道,另一个线程从输入管道中读数据。
等待/通知模式最经典的案例就是“生产者/消费者”模式。但此模式在使用上有几种“变形”,但原理上都是基于wati/notify的。
wait和notify方法是线程通信的基础,它们都只能在同步方法或同步块中使用。
synchronize锁住的其实不是一个方法、一段代码,而是一个对象或者一个class类。
对volatile关键字的理解,与java的内存模型的概念是分不开的。volatile保证了变量操作的可见性和有序性,但是有使用场景的限制。