用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心Java

Java 线程入门——线程的同步

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 18:54:54
//可以尝试把下面的关键字synchronized去掉。

public class CubbyHole {

private int contents;

private boolean available = false;

public synchronized int get() {

while (available == false) {

try {

wait();

} catch (InterruptedException e) {

}

}

available = false;

notifyAll();

return contents;

}

public synchronized void put(int value) {

while (available == true) {

try {

wait();

} catch (InterruptedException e) {

}

}

contents = value;

available = true;

notifyAll();

}

}



public class Producer extends Thread {

private CubbyHole cubbyhole;

private int number;



public Producer(CubbyHole c, int number) {

cubbyhole = c;

this.number = number;

}



public void run() {

for (int i = 0; i < 10; i++) {

cubbyhole.put(i);

System.out.println("Producer #" + this.number + " put: " + i);

try {

sleep((int) (Math.random() * 100));

} catch (InterruptedException e) {

}

}

}

}



public class Consumer extends Thread {

private CubbyHole cubbyhole;

private int number;



public Consumer(CubbyHole c, int number) {

cubbyhole = c;

this.number = number;

}



public void run() {

int value = 0;

for (int i = 0; i < 10; i++) {

value = cubbyhole.get();

System.out.println("Consumer #" + this.number + " got: " + value);

}

}

}



public class ProducerConsumerTest {

public static void main(String[] args) {

CubbyHole c = new CubbyHole();

Producer p1 = new Producer(c, 1);

Consumer c1 = new Consumer(c, 1);



p1.start();

c1.start();

}

}



Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:18,328.13000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号