import java.util.concurrent.*;
public class ThreadDemo {
/**
* 多线程的方式输出helloworld,每个线程一次打印一个字母
*/
public static void main(String[] args) {
//创建任务队列
ArrayBlockingQueue<String> blockingDeque = new ArrayBlockingQueue<>(100);
String str = "hellworld";
//数据初始化
dataInit(str, blockingDeque);
//创建线程池
ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(
5,
10,
10,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(100),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
//线程消费,循环可使用 while或根据字符串长度,队列大小循环消费
for (int i = 0; i < str.length(); i++) {
poolExecutor.execute(() -> {
String s = blockingDeque.remove();
System.out.println(Thread.currentThread().getName() + ":" + s);
});
}
}
private static void dataInit(String data, ArrayBlockingQueue<String> blockingDeque) {
for (char c : data.toCharArray()) {
blockingDeque.add(String.valueOf(c));
}
}
}
多线程的方式输出helloworld,每个线程一次打印一个字母
最新推荐文章于 2023-06-01 08:51:35 发布
该代码示例展示了如何在Java中通过多线程来逐个打印字符串hellworld的每个字符。它创建了一个ArrayBlockingQueue作为任务队列,初始化数据后,使用ThreadPoolExecutor执行任务。每个线程从队列中取出一个字符并打印。
摘要由CSDN通过智能技术生成