java中SynchronousQueue是什么意思
本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.概念
SynchronousQueue是一个队列长度为 0 的 BlockingQueue,这样只要上一个入队列的生产者的消息没被消费,之后的生产者就必须等待。如果要保证生产者先后顺序,则需要设置为公平模式。
2.特点
(1)内部容量是0
(2)每次删除操作都要等待插入操作
(3)每次插入操作都要等待删除操作
(4)一个元素,一旦有了插入线程和移除线程,那么很快由插入线程移交给移除线程,这个容器相当于通道,本身不存储元素
(5)在多任务队列,是最快的处理任务方式。
3.实例
package com.example.demo.threadnew;
import java.util.Random;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
public class QueueT {
public static void main(String[] args) throws InterruptedException {
SynchronousQueue<Integer> queue = new SynchronousQueue<Integer>();
new Product(queue).start();
new Customer(queue).start();
}
static class Product extends Thread {
SynchronousQueue<Integer> queue;
public Product(SynchronousQueue<Integer> queue) {
this.queue = queue;
}
@Override
public void run() {
while (true) {
int rand = new Random().nextInt(1000);
System.out.println("生产了一个产品:" + rand);
System.out.println("等待三秒后运送出去...");
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
queue.put(rand);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(queue.isEmpty());
}
}
}
static class Customer extends Thread {
SynchronousQueue<Integer> queue;
public Customer(SynchronousQueue<Integer> queue) {
this.queue = queue;
}
@Override
public void run() {
while (true) {
try {
System.out.println("消费了一个产品:" + queue.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("------------------------------------------");
}
}
}
}
以上就是java中SynchronousQueue的有关介绍,作为一种阻塞队列,可以说对待任务的处理是非常认真的,一定会保证之前经手任务的完成。对这种队列感兴趣的,快试试代码的使用操作吧。
以上是 java中SynchronousQueue是什么意思 的全部内容, 来源链接: utcz.com/z/542528.html