这是我在书中看到的代码,代码中有把实例化静态内部类。静态类怎么可以实例化?为什么要这么做?
import java.util.concurrent.*;
import java.util.concurrent.locks.*;
public class Consumerproducer {
private static Buffer buffer = new Buffer();
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.execute(new Producertask());
executor.execute(new ConsumerTask());
}
static class Producertask implements Runnable {
public void run() {
int i = 10;
try {
while (true) {
System.out.println("Producer writes " + i);
buffer.write(i++);
Thread.sleep((int) (Math.random() * 10000));
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
static class ConsumerTask implements Runnable {
public void run() {
try {
while (true) {
System.out.println("\t\tConsumer reads " + buffer.read());
Thread.sleep((int) (Math.random() * 10000));
}
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
private static class Buffer {
private static final int CAPACITY = 1;
private java.util.LinkedList<Integer> queue =
new java.util.LinkedList<>();
private static Lock lock = new ReentrantLock();
private static Condition notEmpty = lock.newCondition();
private static Condition notFull = lock.newCondition();
public void write(int value) {
lock.lock();
try {
while (queue.size() == CAPACITY) {
System.out.println("Wait for notFull condition");
notFull.await();
}
繁星淼淼
慕斯709654
呼唤远方
缥缈止盈
慕侠2389804
相关分类