日期:2014-05-20  浏览次数:20623 次

多线程的两个程序有什么不同。。。
/*
需求:定义一个线程间通信的程序,在其中加入等待唤醒机制,采用同步机制,保证代码
  的安全性;
思路:定义一个生产者类和一个消费者类,这两个类实现Runnable接口,实现多线程;
在定义一个资源类,生产者类和消费者类操作的数据资源就是该类对象;
步骤:
*/
package productiontest2;
class Resource 
{
private int count=0;
private boolean flag=false;
public void setFlag()
{
flag=!flag;
}
public boolean getFlag()
{
return flag;
}
public void setCount()
{
++count;
}
public int getCount()
{
return count;
}
public synchronized void produce()
{
if(getFlag())
try
{
wait();
}
catch(Exception e )
{

}
  setCount();
  System.out.println(Thread.currentThread().getName()+"生产者。。。"+getCount());
setFlag();
notify();
}
public synchronized void consume()
{
if(!getFlag())
try
{
wait();
}
catch(Exception e )
{

}
  System.out.println(Thread.currentThread().getName()+"消费者*****************************"+getCount());
setFlag();
notify();
}
}
class Producer implements Runnable
{
private Resource res;
Producer(Resource res)
{
this.res=res;
}
public void run()
{
while(true)
res.produce();
}
}
class Consumer implements Runnable
{
private Resource res;
Consumer(Resource res)
{
this.res=res;
}
public void run()
{
while(true)
res.consume();
}
}
class ProductionTest
{
public static void main(String []args)
{
Resource r=new Resource();
Producer pro=new Producer(r);
Consumer con=new Consumer(r);
Thread t1=new Thread(pro);
Thread t2=new Thread(pro);
Thread t3=new Thread(con);
Thread t4=new Thread(con);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
结果:
D:\javaprog\809>java productiontest2.ProductionTe
Thread-0生产者。。。1
Thread-3消费者*****************************1
Thread-1生产者。。。2
Thread-2消费者*****************************2
Thread-0生产者。。。3
Thread-3消费者*****************************3
Thread-1生产者。。。4
Thread-2消费者*****************************4
Thread-0生产者。。。5
Thread-3消费者*****************************5
Thread-1生产者。。。6
Thread-2消费者*****************************6
Thread-0生产者。。。7
Thread-3消费者*****************************7
Thread-1生产者。。。8
Thread-2消费者*****************************8
Thread-0生产者。。。9
Thread-3消费者*****************************9
Thread-1生产者。。。10
Thread-2消费者*****************************10
Thread-0生产者。。。11
Thread-3消费者*****************************11
Thread-1生产者。。。12
Thread-2消费者*****************************12
Thread-0生产者。。。13
Thread-3消费者*****************************13
Thread-1生产者。。。14
Thread-2消费者*****************************14
Thread-0生产者。。。15
Thread-3消费者*****************************15
Thread-1生产者。。。16
Thread-2消费者*****************************16
Thread-0生产者。。。17
Thread-3消费者*****************************17
。。。。。。
第二个程序
/*
需求:定义一个线程间通信的程序,在其中加入等待唤醒机制,采用同步机制,保证代码
  的安全性;
思路:定义一个生产者类和一个消费者类,这两个类实现Runnable接口,实现多线程;
在定义一个资源类,生产者类和消费者类操作的数据资源就是该类对象;
步骤:
*/
package productiontest;
class Resource 
{
private int count=0;
private boolean flag=false;
public void setFlag()
{
flag=!flag;
}
public boolean getFlag()
{
return flag;
}
public void setCount()
{
++count;
}
public int getCount()
{
return count;
}
}
class Producer implements Runnable
{
private Resource res;
Producer(Resource res)