生产者消费者,死锁不知该如何修改?多谢!public class producer extends Thread{
private static String[] buffer=new String[8] ;
private static int pi=0;
private static int si=0;public synchronized void produce(){
buffer[pi++%8]="produce";
System.out.println("producer:"+pi);if(pi-si+1>8){
try{
wait();
}catch(Exception e){System.out.println(e);}
}notify();}
public synchronized void consume(){
buffer[si++%8]=null;
System.out.println("consumer:"+si);if(pi-si<0){
try{
wait();
}catch(Exception e){System.out.println(e);}
}
notify();
}public void run(){
try{while(true){produce();
}
}catch(Exception e){}}
}------------------------------------------------------------------------public class consumer extends Thread{
private producer p=null;
public consumer(producer p){this.p=p;
}public void run(){p.consume();
}
}------------------------------------------------------------
public class t9{
public static void main(String[] args){
producer p=new producer();
p.start();
consumer c=new consumer(p);
c.start();}}-------------------------------------------------------------
运行结果:C:\bb>java t9
producer:1
producer:2
producer:3
producer:4
producer:5
producer:6
producer:7
producer:8
consumer:1
producer:9
.....
死锁
private static String[] buffer=new String[8] ;
private static int pi=0;
private static int si=0;public synchronized void produce(){
buffer[pi++%8]="produce";
System.out.println("producer:"+pi);if(pi-si+1>8){
try{
wait();
}catch(Exception e){System.out.println(e);}
}notify();}
public synchronized void consume(){
buffer[si++%8]=null;
System.out.println("consumer:"+si);if(pi-si<0){
try{
wait();
}catch(Exception e){System.out.println(e);}
}
notify();
}public void run(){
try{while(true){produce();
}
}catch(Exception e){}}
}------------------------------------------------------------------------public class consumer extends Thread{
private producer p=null;
public consumer(producer p){this.p=p;
}public void run(){p.consume();
}
}------------------------------------------------------------
public class t9{
public static void main(String[] args){
producer p=new producer();
p.start();
consumer c=new consumer(p);
c.start();}}-------------------------------------------------------------
运行结果:C:\bb>java t9
producer:1
producer:2
producer:3
producer:4
producer:5
producer:6
producer:7
producer:8
consumer:1
producer:9
.....
死锁
解决方案 »
- java IO文件操作入门经典例子-学会这些例子,你会发现IO是如此简单
- 这句分页在sqlserver中如何写?
- ServerSocket中的客户端IP地址会被伪造么?看新闻刷票有感啊~
- JEditorPane 中怎么样设置 才能使 getText()能够得到的 正常的汉字??
- 求助呀求助!!
- struts2上传文件问题
- 请教有关qq邀请多人聊天的技术
- linux下批量修改xml文件内容
- java 对图片处理的问题 这个问题有点急!~~
- 请问如何把JAVA编译好的文件打包成.JAR。然后就象执行WINDOWS程序一样双击执行??谢谢
- 怎样去掉集合显示结果中的"[ ]"和","
- 如何判断一个Date是否是本月的最后一天(月末)
public class consumer extends Thread{
private producer p=null;
public consumer(producer p){this.p=p;
}public void run(){
while(true){
p.consume();
try{sleep(1000);}catch(Exception e){}
}}
}