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)
{
&
相关文档:
package sort;
public class RadixSort {
// 求x 数第d位上的数字,例如12345,十位数字是4 12345/10%10=4
// d=0 表示个位 ;d=1 表示十位...依次类推
public static int digit(int d,int x){
return x/(int)Math.pow(10, d)%10;
}
public static void ra ......
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 ......
/*当执行SQL时发现不能连接数据库,先重连一次*/
import java.io.FileInputStream;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
......
import lotus.domino.*;
import java.io.*;
import java.util.Vector;
import jxl.*;
/*******************************************************************************
* @saveSQMessageToOracle
* @作者:徐华祥
* @2009年10月28日
* @说明:Execl文件的导入
********** ......
一个使用了队列的通用实现:
http://blog.csdn.net/chaosllgao/archive/2009/05/23/4211183.aspx
此文描述了一种更简单的模型
1. 同时只有1个生产者和1个消费者
2. 不用队列,同时只有一个产品
3. 生产者每次生产1个0到100之间的随机数,消费者则把该随机数打印出来。如果产生的随机数为0,则 ......