BlockingQueue之ArrayBlockingQueue类的测试
LinkedBlockingQueue是一个基于链表实现的可选容量的阻塞队列。
队头的元素是插入时间最长的,队尾的元素是最新插入的。新的元素将会被插入到队列的尾部。
LinkedBlockingQueue的容量限制是可选的,
如果在初始化时没有指定容量,那么默认使用int的最大值作为队列容量。
作者:天外流星for
链接:https://www.jianshu.com/p/7b2f1fa616c6
来源:简书
=================================================
package t1;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestThread25 {
public static void main(String[] args) {
final BlockingQueue<Character> bq = new ArrayBlockingQueue<>(26);
final ExecutorService es = Executors.newFixedThreadPool(2);
Runnable r = () -> {
for (char ch = 'A'; ch <= 'Z'; ch++) {
try {
bq.put(ch);
System.out.printf("%c produced by producer.%n", ch);// 能同步,但是输出顺序不能保证
} catch (InterruptedException e) {
}
}
};
es.execute(r);
Runnable r2 = () -> {
char ch = '\0';
do {
try {
ch = bq.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.printf("%c consumed by consumer.%n", ch);// 能同步,但是输出顺序不能保证
} while (ch != 'z');
};
es.execute(r2);
}
}
输出结果:
A produced by producer.
B produced by producer.
A consumed by consumer.
B consumed by consumer.
C consumed by consumer.
C produced by producer.
D produced by producer.
D consumed by consumer.
E consumed by consumer.
E produced by producer.
F produced by producer.
G produced by producer.
H produced by producer.
I produced by producer.
J produced by producer.
K produced by producer.
F consumed by consumer.
L produced by producer.
M produced by producer.
N produced by producer.
O produced by producer.
G consumed by consumer.
H consumed by consumer.
I consumed by consumer.
J consumed by consumer.
K consumed by consumer.
L consumed by consumer.
M consumed by consumer.
N consumed by consumer.
O consumed by consumer.
P consumed by consumer.
P produced by producer.
Q produced by producer.
Q consumed by consumer.
R consumed by consumer.
R produced by producer.
S produced by producer.
T produced by producer.
U produced by producer.
V produced by producer.
W produced by producer.
X produced by producer.
Y produced by producer.
Z produced by producer.
S consumed by consumer.
T consumed by consumer.
U consumed by consumer.
V consumed by consumer.
W consumed by consumer.
X consumed by consumer.
Y consumed by consumer.
Z consumed by consumer.

浙公网安备 33010602011771号