Java多线程: 生产者消费者问题(源码)
有人反映看不到源码,发现是CSDN的代码控件有问题。希望CSDN好好改进一下。
暂时先以文本方式发布出来,格式会变样。
import java.util.LinkedList;
public class ProducerConsumer
{
/**
* @param args
*/
public static void main(String[] args)
{
Queue queue = new Queue();
Producer producer1 = new Producer(queue, "producer1");
Producer producer2 = new Producer(queue, "producer2");
Consumer consumer1 = new Consumer(queue, "consumer1");
Consumer consumer2 = new Consumer(queue, "consumer2");
Consumer consumer3 = new Consumer(queue, "consumer3");
producer1.start();
producer2.start();
consumer1.start();
consumer2.start();
consumer3.start();
}
}
class Message
{
public static int sno = 0;
public int id = 0;
public String content = null;
public Message(String content)
{
synchronized(Message.class)
{
this.id = ++sno;
}
this.content = content;
}
public String toString()
{
return "id = " + id + ", content = " + content;
}
}
class Queue
{
private LinkedList queue = null;
private int capacity = 0;
public Queue(int capacity)
{
this.capacity = capacity;
queue = new LinkedList();
}
public Queue()
{
this(10);
}
public synchronized void put(Message product)
{
//wait until the consumer has consume a product
while(queue.size() >= capacity)
{
try
{
wait();
}
catch (InterruptedException e)
{
&
相关文档:
java心得!--很好的java学习历程(转自张国宝) 收藏 此文于2009-10-26被推荐到CSDN首页
如何被推荐?
1. 数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。
......
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.Serializable;
import java.rmi.Na ......
首先引用一篇文章,介绍一个简单的JNI的调用的过程。 JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。 JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DL ......
jdk提供了Zip相关的类方便的实现压缩和解压缩。使用方法很简单。下边分别是压缩和解压缩的简单事例
1、压缩的
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipE ......
Java 对文件进行读写操作的例子很多,让初学者感到十分困惑,我觉得有必要将各种方法进行
一次分析,归类,理清不同方法之间的异同点。
一.在 JDK 1.0 中,通常是用 InputStream & OutputStream 这两个基类来进行读写操作的。
InputStream 中的 FileInputStream 类似一个文件句柄,通过它来对文件进行操作,类似 ......