中文第四版的哦(p657倒数第十行)“然后在它回收旧线程时停止创建新线程”。
这个它指的是CachedThreadPool,我一开始是深信不疑的,认为CachedThreadPool如果一个线程死亡了,那它就不会再创建新的线程了。后来看到一个大牛说“会”。于是自己做了实验:
package test;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.locks.*;
import java.io.*;
public class Test1 implements Callable<Thread>{
static ThreadLocal<Integer> t=new ThreadLocal<Integer>(){
@Override
protected synchronized Integer initialValue(){
return new Integer(0);
}
};
static int count=0;
final int id=count++;
public Test1(){
System.out.println("Constructor:"+id);
}
static class Test2 implements Runnable{
public void run(){
System.out.println(t.get()+" o");
}
}
public Thread call(){
t.set(id);
System.out.println(t.get());
return Thread.currentThread();
}
public static void main(String[] args){
ExecutorService exec=Executors.newCachedThreadPool();
for (int i=0;i<4;i++)
exec.submit(new Test1());
Future<Thread> f=exec.submit(new Test1());
try{
((Thread)f.get()).join();}//等待线程死亡
catch (Exception e){
}
for (int i=0;i<5;i++)
exec.execute(new Test2());
exec.shutdownNow();
}
}
结果如下:
Constructor:0
Constructor:1
Constructor:2
Constructor:3
Constructor:4
1
3
0
2
4
0 o
0 o
0 o
0 o
0 o
我是用ThreadLocal来确定一个线程的存活的(因为ExecutorService没有提供关于线程池里线程信息的方法只好这么做了,如果大家有什么其他方法的话也不吝赐教)这里虽然只是join了一个线程,但是从结果看其他线程也都死亡了。ThreadLocal是与线程相关的变量,线程换了一个任务以后也仍然保持原值。不信的话,可以把join方法那句去掉。
分享到:
相关推荐
Java并发编程是Java开发中的重要领域,特别是在多核处理器和分布式系统中,高效地利用并发可以极大地提升程序的性能和响应速度。以下是对标题和描述中所提及的几个知识点的详细解释: 1. **线程与并发** - **线程*...
《Java并发编程实战》这本书是关于Java语言中并发编程技术的经典著作。它详细介绍了如何在Java环境中有效地实现多线程程序和并发控制机制。在Java平台上,由于其本身提供了强大的并发编程支持,因此,掌握并发编程...
《Java并发编程实战》是Java并发编程领域的一本经典著作,它深入浅出地介绍了如何在Java平台上进行高效的多线程编程。这本书的源码提供了丰富的示例,可以帮助读者更好地理解书中的理论知识并将其应用到实际项目中。...
直接就放在书上,你丫有没有良知,书籍是什么,是希望,是神圣的,你们这些译者简直就是在犯罪 ,不过要是英文功底不好,还是建议买本看吧,谁让你英文水平不如他们呢 《JAVA并发编程实践》随着多核处理器的普及,...
Java并发编程是软件开发中的一个关键领域,尤其是在大型企业级应用和分布式系统中。通过学习相关的书籍,开发者可以深入...购买并阅读相关的专业书籍,如《Java并发编程实战》等,将有助于你系统地掌握这一领域的知识。
《Java并发编程艺术》这本书深入探讨了Java平台上的并发编程技术。并发编程是现代多核处理器环境下提升软件性能的关键手段,而Java语言提供了丰富的工具和API来支持这一领域。本书旨在帮助开发者理解和掌握如何在...
JAVA并发编程艺术 高清pdf : 1.并发变成的挑战 2. java并发机制的底层实现原理 3. java 内存模型 4. java并发编程基础 5.java中的锁。。。。。。。
Java并发编程实践是Java开发中不可或缺的一个领域,它涉及到如何高效、正确地处理多线程环境中的任务。这本书的读书笔记涵盖了多个关键知识点,旨在帮助读者深入理解Java并发编程的核心概念。 1. **线程和进程的...
总之,《Java并发编程实战》是一本全面介绍Java并发编程的书籍,适合有一定Java基础并希望提升并发编程能力的开发者阅读。通过学习,你可以掌握解决并发问题的策略和技巧,编写出更加健壮和高效的多线程应用。
Java并发编程是Java开发者必须掌握的关键技能之一,它涉及到如何在多线程环境中高效、安全地执行程序。并发编程能够充分利用多核处理器的计算能力,提高应用程序的响应速度和整体性能。《Java编程并发实战》这本书是...
《JAVA并发编程艺术》是Java开发者深入理解和掌握并发编程的一本重要著作,它涵盖了Java并发领域的核心概念和技术。这本书详细阐述了如何在多线程环境下有效地编写高效、可靠的代码,对于提升Java程序员的技能水平...
《Java编程思想》是 Bruce Eckel 的经典著作,它深入浅出地介绍了Java语言的核心概念和技术,对于初学者和有经验的程序员来说都是极好的学习资源。本压缩包包含两部分主要内容:Java编程思想的答案代码和英文版的...
《Java编程思想》是Java开发领域的一本经典著作,作者是Bruce Eckel。这本书深入浅出地介绍了Java语言的核心概念和技术,对初学者和有经验的开发者都极具价值。书中的内容涵盖了Java语言的各个方面,从基本语法到...
### Java 并发核心编程知识点解析 #### 一、Java并发概述 自Java诞生之初,其设计者就赋予了该语言强大的并发处理能力。Java语言内置了对线程和锁的支持,这使得开发者能够轻松地编写多线程应用程序。本文旨在帮助...
在Java编程领域,并发编程是一项核心技能,尤其是在大型系统或分布式应用中,高效地处理多线程和并发操作是至关重要的。"Java并发编程与实践"文档深入剖析了这一主题,旨在帮助开发者理解和掌握如何在Java环境中有效...
首先,我们来看《Java并发编程实践》(Java Concurrency in Practice)这本书,作者Brian Goetz等。这本书是Java并发领域的经典之作,深入浅出地讲解了Java平台上的并发编程原理和最佳实践。书中涵盖了线程安全、...
Java并发编程是Java开发中的重要领域,特别是在多核处理器和分布式系统中,高效地利用并发可以极大地提升程序的性能和响应速度。这份“java并发编程内部分享PPT”显然是一个深入探讨这一主题的资料,旨在帮助开发者...