版权声明:使用注明出处 https://blog.csdn.net/chunfenxiaotaohua/article/details/82949195
package test;
public class Ck {
private char[] r1=new char[8];
private int wp=0;
public synchronized void shengchan(char aa)//线程同步
{
while(wp==r1.length)
{
try
{
this.wait();
}
catch(Exception e)
{
}
}
this.notifyAll();//唤醒另一个线程。是在当前线程处于就绪状态的前提下
r1[wp]=aa;
++wp;
System.out.println("生产线程正在生产第"+wp+"个产品,该产品是:"+aa);
}
public synchronized void xiaofei()
{
char aa;
while (wp==0)
{
try
{
this.wait();
}
catch(Exception e)
{
}
}
this.notify();
aa=r1[wp-1];
System.out.println("消费线程正在消费第"+wp+"个产品,该产品是:"+aa);
--wp;
}
}
class Sc implements Runnable
{
private Ck xc=null;
public Sc(Ck xc)
{
this.xc=xc;
}
public void run()
{
char aa;
for(int i=0;i<26;i++)
{
aa=(char)('A'+i);
xc.shengchan(aa);
}
}
}
class Xf implements Runnable
{
private Ck xc = null;
public Xf(Ck xc)
{
this.xc = xc;
}
public void run()
{
for (int i=0; i<26; i++)
{
xc.xiaofei();
}
}
}
public class J100503
{
public static void main(String[] args)
{
Ck ck = new Ck();
Sc sc = new Sc(ck);
Xf xf = new Xf(ck);
Thread xc1 = new Thread(sc);
xc1.start();//单开线程执行并且生产和消费的线程同时执行
Thread xc2 = new Thread(xf);
xc2.start();
}
}