`

java多线程 生产者与消费者

 
阅读更多

编写程序时出现的问题1.直接在consummer thread and product thread 中产生consume的实例对象,那就产生了两个实例对象consume A and B,Thread(pro).start()调用的是A.put(),而Thread(consummer).start()调用的是B.get(),因此产生了不同步,可以采用构造函数让他们调用同一个实例对象。2.生产者不停存放,消费者不停消费,因此要有while()循环。3.设置进入等待的条件标志 boolean noproduct。

/***//**
*@(#)consume.java
*
*consumeapplication

*
@authorzhoubo
*
@version1.002008/3/24
*/



publicclassconsume...{
inti=0;
booleannoproduct=true;


publicstaticvoidmain(String[]args)...{

consumekk
=newconsume();
consummerconsumer
=newconsummer(kk);
productpro
=newproduct(kk);

/**//*consummerconsumer=newconsummer();//itismistake
productpro=newproduct();
*/


newThread(pro).start();
newThread(consumer).start();


}

publicsynchronizedvoidget()
...{

if(noproduct)
...{
try
...{
wait();
}

catch(InterruptedExceptione)
...{
}


}

else
i
--;
if(i==1)
...{
noproduct
=true;
notifyAll();
}


System.out.println(
"nowisconsume"+i);
}

publicsynchronizedvoidput()
...{

if(!noproduct)
...{
try
...{
wait();
}
catch(InterruptedExceptione)...{}
}

else
...{
i
++;
if(i==10)
...{
noproduct
=false;
notifyAll();
}


}

System.out.println(
"nowisproduct"+i);


}

}

classconsummerextendsThread
...{
consumecon
/**//*=newconsume()*/;//thisismistake
publicconsummer(consumeconsume1)
...{
this.con=consume1;
}


publicvoidrun()
...{
while(true)
...{
con.get();
try
...{
this.sleep(1000);
}
catch(Exceptionerr)...{}
}


}

}

classproductextendsThread
...{
consumecon
/**//*=newconsume()*/;//thisismistake
publicproduct(consumeconsume1)
...{
this.con=consume1;
}

publicvoidrun()
...{
while(true)
...{
con.put();
try
...{
this.sleep(1000);
}
catch(Exceptionerr)...{}
}


}

}

编译,没有问题,运行结果正常

有时会冒出下面的咚咚,好像MAIN()里没有异常啊,简单地throws处理,有没有人告诉我原因呢

java.lang.NoSuchMethodError: main
Exception in thread "main"

分享到:
评论

相关推荐

    java多线程生产者与消费者案例

    关于java多线程的东西,里面有生产者与消费者的案例,感兴趣的朋友看一下吧。

    java多线程实现生产者和消费者

    9. **测试与调试**:多线程问题往往难以复现,因此在编写生产者-消费者代码时,应编写充分的测试用例,包括边界情况,如缓冲区满和空的状态转换。 通过理解和掌握这些知识点,开发者能够有效地实现生产者-消费者...

    Java多线程实现生产者消费者

    本示例中的“生产者-消费者”模型是一种经典的多线程问题,它模拟了实际生产环境中的资源分配与消耗过程。下面我们将详细探讨如何在Java中实现这个模型。 首先,我们要理解生产者-消费者模型的基本概念。在这个模型...

    java多线程经典模型生产者消费者

    java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型生产者消费者java多线程经典模型...

    java多线程(生产者与消费者)

    总结来说,“java多线程(生产者与消费者)”是关于如何在Java中使用同步、线程间通信和共享资源来实现高效且安全的并发编程。通过理解并熟练应用这些概念和工具,开发者可以构建出能够充分利用多核处理器能力的高...

    Java多线程 生产者-消费者模式

    总之,Java中的生产者-消费者模式是多线程编程中解决数据共享和同步问题的有效手段,通过合理利用`BlockingQueue`等并发工具类,我们可以构建高效、稳定的多线程应用。在开发过程中,了解和掌握这种模式有助于提高...

    JAVA实现线程间同步与互斥生产者消费者问题

    本项目通过一个生产者消费者问题的实例,展示了如何在Java中实现线程间的同步与互斥。 生产者消费者问题是经典的并发问题之一,它涉及到两个类型的线程:生产者和消费者。生产者负责生成数据(产品),而消费者则...

    java多线程实现生产者消费者问题

    用java多线程,实现生产者消费者同步和互斥的问题,操作系统中的经典问题

    java多线程实现生产者消费者关系

    在实际应用中,我们常常会遇到一种典型的多线程问题——生产者消费者模型。这个模型描述了两种类型的线程:生产者线程负责创建或生产资源,而消费者线程则负责消耗这些资源。在Java中,我们可以利用同步机制来实现...

    操作系统:多线程处理生产者消费者,java实现

    基本满足操作系统课上要求,java实现的生产者消费者模型。

    java实现多线程经典模型生产者消费

    java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现...

    java 多线程 生产者消费者模式

    Java多线程编程是开发高并发、高性能应用的关键技术之一,而生产者消费者模式是多线程编程中常用的一种设计模式。它通过分离数据的生产和消费过程,实现了线程间的协同工作,有效避免了资源的竞争和浪费。在这个模式...

    多线程简易实现生产者消费者模式

    生产者消费者模式是一种经典的多线程同步问题解决方案,它源于现实世界中的生产流水线,用于描述生产者(Producer)和消费者(Consumer)之间的协作关系。在这个模式中,生产者负责生成产品并放入仓库,而消费者则从...

    java 多线程生产者消费者模型demo

    Java多线程生产者消费者模型是一种典型的线程协作模式,用于解决并发编程中资源的高效利用和同步问题。在这个模型中,"生产者"线程负责生成数据,而"消费者"线程则负责处理这些数据。为了实现这种模式,Java提供了...

    java 多线程 生产者消费者模式源码

    java 多线程 生产者消费者模式,多个生产者对多个消费者,使用jdk 线程池及 BlockingQueue实现,解决了待生产的任务生产完成后,正常终止所有线程,避免线程(特别是消费者线程)因阻塞而无限等待的情况。源码中还简单...

    java多线程生产者消费者问题示例

    java多线程学习,生产者消费者问题示例

    Java多线程-生产者与消费者问题

    ### Java多线程-生产者与消费者问题 #### 一、生产者与消费者问题概览 **1.1 概要** 生产者与消费者问题是计算机科学中一个多线程同步的经典问题。它描述了两个线程如何共享有限资源的场景:一个是生产者...

    由生产者/消费者问题看JAVA多线程

    ### 由生产者/消费者问题深入理解JAVA多线程 #### 生产者/消费者问题概述 生产者/消费者问题是一个经典的计算机科学问题,用于展示进程间的通信与同步问题。在这个模型中,生产者负责创建数据并将其放置到共享内存...

Global site tag (gtag.js) - Google Analytics