一个简单的java生产着消费者模式的代码
2013-03-28 17:13
435 查看
package test;
public class SycnStack{
private static Integer value =0;
private static Object LOCK = new Object();
public static void main(String[] args)
{
SycnStack ss = new SycnStack();
ss.new AThread().start();
ss.new BThread().start();
}
public static void produce()
{
synchronized (LOCK)
{
while(value == 3)
{
System.out.println("值超过3,停止增加");
try
{
LOCK.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
value ++;
System.out.println("生产第 " + value + "个");
LOCK.notify();
}
}
public static void custom()
{
synchronized (LOCK)
{
while(value == 0){
System.out.println("值小于或等于0,停止减少");
try {
LOCK.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("消费第 " + value + "个");
value --;
LOCK.notify();
}
}
class AThread extends Thread
{
public void run()
{
while(true)
{
produce();
try
{
Thread.sleep((long)(Math.random() * 3000));
}
catch (InterruptedException e)
{
}
}
}
}
class BThread extends Thread
{
public void run()
{
while(true)
{
custom();
try
{
Thread.sleep((long)(Math.random() * 3000));
}
catch (InterruptedException e)
{
}
}
}
}
}
public class SycnStack{
private static Integer value =0;
private static Object LOCK = new Object();
public static void main(String[] args)
{
SycnStack ss = new SycnStack();
ss.new AThread().start();
ss.new BThread().start();
}
public static void produce()
{
synchronized (LOCK)
{
while(value == 3)
{
System.out.println("值超过3,停止增加");
try
{
LOCK.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
value ++;
System.out.println("生产第 " + value + "个");
LOCK.notify();
}
}
public static void custom()
{
synchronized (LOCK)
{
while(value == 0){
System.out.println("值小于或等于0,停止减少");
try {
LOCK.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("消费第 " + value + "个");
value --;
LOCK.notify();
}
}
class AThread extends Thread
{
public void run()
{
while(true)
{
produce();
try
{
Thread.sleep((long)(Math.random() * 3000));
}
catch (InterruptedException e)
{
}
}
}
}
class BThread extends Thread
{
public void run()
{
while(true)
{
custom();
try
{
Thread.sleep((long)(Math.random() * 3000));
}
catch (InterruptedException e)
{
}
}
}
}
}
相关文章推荐
- 详解Java设计模式中的生产-消费者模式及代码实现
- 简单生产消费模式的代码流程(Java代码)
- 一个简单的Linux内核代码整合到一个文件的Java程序
- java 生产消费者模式(一)
- Java线程机制的浅析 生产/消费者模式 LinkedBlockingQueue
- 【代码示例】 一个简单的Java死锁
- [Java]一个简单的计算有向赋权图最短距离的代码
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。
- 用java代码写一个简单的网上购物车程序
- 2.我的第一个JSP代码:java控制输出1-100之和,say hello并写一个简单的表格
- 致java初学者:理解每一句java代码,给出一个简单实例。
- 模板设计模式,简单Java代码实现
- JAVA 一个简单的文件写入代码(遍历文件夹获取所有文件、写入缓冲池、获取文件绝对路径、按后缀名过滤文件)
- 生产消费者模式实现方式和线程安全问题代码示例
- 用JSP+Servlet+JavaBean模式实现一个简单的登录网页设计(JSP+Tomcat+MySQL)
- Java 一个简单的回调模式
- 用java的spring实现一个简单的IOC容器示例代码
- 【设计模式】java生产者和消费者的代码实例
- java 创建一个简单的excel 表代码
- 第一次动手写java的简单代码,实现输出一个空心菱形。