java中Lock的简单使用
public class Buffer {
private int maxsize =10;
private List<String> bufflist;
private Lock lock = new ReentrantLock();
private Condition con1 = lock.newCondition();
public Buffer(){
bufflist = new ArrayList<>();
System.out.println("缓冲器初始化完毕!");
}
public void add(String name,String s){
lock.lock();
try {
while(bufflist.size()==maxsize){
System.out.println(name+"等待");
con1.await();
}
bufflist.add(s);
System.out.println(name+"生产了一块面包!剩余"+bufflist.size()+"个");
con1.signalAll();
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
lock.unlock();
}
}
public void delete(String name){
lock.lock();
try {
while(bufflist.isEmpty()){
System.out.println(name+"等待");
con1.await();
}
bufflist.remove(0);
System.out.println(name+"买走了一块面包!剩余"+bufflist.size()+"个");
con1.signalAll();
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
lock.unlock();
}
}
}