实现思路:
- 1.wait、notifyAll实现:
- 2.Samper信号量令牌
- 3.Lock锁
代码分别实现这四种
定义一个接口:
IPutGetBlock.java
public interface IPutGetBlock<I> {
void putThread(I i) throws InterruptedException;
I getThread() throws InterruptedException;
}
1.wait、notifyAll实现:
import java.util.LinkedList;
import java.util.List;
public class WaitNotifyBlock<E> implements IPutGetBlock<E>{
private List queue = new LinkedList();
private int limit=0;
public WaitNotifyBlock(int limit) {
this.limit = limit;
}
@Override
public synchronized void putThread(E o) throws InterruptedException {
while (queue.size()>=limit)
wait();
queue.add(o);
notifyAll();
}
@Override
public synchronized E getThread() th