在JDK1.5发布之前,我们要进行同步多线程,要使用Synchronized以及 wait notify 等对象,不够形象
如以下这个模拟生产和消费的多线程程序
class Resource
{
private String name;
private int count=1;
private boolean flag=false;
public synchronized void set(String name)
{
while(flag)//生产一个,消费一个
try{
this.wait();}catch(Exception e){}//如果已生产则wait
this.name=name+"--"+count++;
System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name);
flag=true;//生产之后转换状态
this.notifyAll();//唤醒所有进程,再次判断flag,故生产wait
}
public synchronized void out()
{
while(!flag)
try{wait();}catch(Exception e){}//如已消费则wait
System.out.println(Thread.currentThread().getName()+"...消费者........"+this.name);
flag=