LinkedTransferQueue实现两个线程之间的数据传递共享
解决方法:
实现线程threadA存放数据到队列LinkedTransferQueue,如果没有其它线程从队列中获取数据,那threadA不会进入阻塞状态,可以继续添加数据到LinkedTransferQueue,这点与SynchronousQueue队列不同。
如果threadB获取数据时队列没数据,那threadB就进入阻塞状态,当threadA往队列里添加数据时threadB才进入可执行状态。
1.测试类
import java.util.concurrent.LinkedTransferQueue;
public class Test{
public static void main(String[] args) {
try {
LinkedTransferQueue s=new LinkedTransferQueue();
//往LinkedTransferQueue队列获取数据的线程
TestB testB= new TestB(s);
Thread threadB = new Thread(testB);
threadB.start();
Thread.sleep(1000);
//往LinkedTransferQueue队列添加数据的线程
TestA testA = new TestA(s);
Thread threadA = new Thread(testA);
threadA.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.线程threadA,往队列里添加数据:http://www.yayihouse.com/yayishuwu/chapter/1948