package com.geekbang.waitnotify.producerconsumer;
import java.util.LinkedList;
import java.util.Queue;
import java.util.concurrent.TimeUnit;
public class ProducerConsumerAppMain {
public static final Object LOCKER = new Object();
public static void main(String[] args) {
Queue<String> urls = new LinkedList<>();
Consumer<String> consumer = new Consumer<>(urls);
Producer<String> producer = new Producer<>(urls, 1024);
for (int i = 0; i < 100; i++) {
Thread consumerThread = new Thread(() -> {
while (true) {
try {
String url = consumer.consume();
processURL(url);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, "消费者-" + i);
consumerThread.start();
}
for (int i = 0; i < 3; i++) {
Thread producerThread = new Thread(() -> {
while (true) {
try {
String url = produceURL();
producer.produce(url);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, "生产者-" + i);
producerThread.start();
}
// TODO 如果想给生产者消费者做一个统计,统计每个生产者消费者所生产/消费的task的数量,应该
// TODO 1)使用哪种数据结构?
// TODO 2)如何保证线程安全?
// TODO 3)怎么将统计结果输出到控制台?
}
private static String produceURL() {
StringBuilder ret = new StringBuilder();
ret.append("www.");
for (int i = 0; i < 6; i++) {
int rand = ((int) (Math.random() * 1000)) % 26;
char ch = (char) (rand + 'a');
ret.append(ch);
}
ret.append(".com");
return ret.toString();
}
private static void processURL(String url) throws InterruptedException {
System.out.println("开始处理:" + url);
Thread.sleep(TimeUnit.SECONDS.toMillis(1));
System.out.println("处理完成:" + url);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
java实现多线程经典模型生产者消费
共3个文件
java:3个
需积分: 0 0 下载量 28 浏览量
2023-10-29
20:24:51
上传
评论
收藏 3KB ZIP 举报
温馨提示
java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费
资源推荐
资源详情
资源评论
收起资源包目录
java实现多线程经典模型生产者消费.zip (3个子文件)
src
com
geekbang
waitnotify
producerconsumer
ProducerConsumerAppMain.java 2KB
Consumer.java 842B
Producer.java 1008B
共 3 条
- 1
资源评论
zero2100
- 粉丝: 160
- 资源: 2464
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功