package thread; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadLocalTest { public ThreadLocalTest() { } public static void main(String[] args) throws Exception { new ThreadLocalTest().test3(); } private static final ThreadLocal<Content> tl = new ThreadLocal<Content>(); private ExecutorService executorService = Executors.newFixedThreadPool(2); public void set() { Content content = new Content(); System.out.println("set hashCode=" + content.hashCode()); tl.set(content); } void test3() throws Exception { System.out.println("begin"); executorService.execute(new Runnable() { @Override public void run() { set(); } }); // 线程销不会回收,线程没结束 Thread.sleep(2000); System.out.println("request gc"); System.gc(); Thread.sleep(1000); executorService.shutdown(); // 线程销会回收 Thread.sleep(2000); System.out.println("request gc"); System.gc(); Thread.sleep(1000); System.out.println("end"); } void test2() throws Exception { System.out.println("begin"); new Thread() { public void run() { set(); // 线程销毁会回收,線程執行借宿 } }.start(); Thread.sleep(2000); System.out.println("request gc"); System.gc(); Thread.sleep(1000); System.out.println("end"); } void test1() throws Exception { System.out.println("begin"); set(); System.out.println("try to release content data"); tl.set(null);// @1 // tl.remove();//@2 // 会回收 System.out.println("request gc"); System.gc(); Thread.sleep(1000); System.out.println("end"); } } class Content { // /byte data[] = new byte[1024 * 1024 * 10]; protected void finalize() { System.out.println("I am released" + hashCode()); } @Override public int hashCode() { // TODO Auto-generated method stub return super.hashCode(); } }
相关推荐
目录: 基础概念 造成线程不安全的条件 变量种类与线程安全 如何避免线程不安全 synchronized关键字使用和原理 jdk多线程并发包 THREADLOCAL 测试工程
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
3.3.3 ThreadLocal类 3.4 不变性 3.4.1 Final域 3.4.2 示例:使用Volatile类型来发布不可变对象 3.5 安全发布 3.5.1 不正确的发布:正确的对象被破坏 3.5.2 不可变对象与初始化安全性 3.5.3 安全发布的常用...
仓库内容是学习Java时所用的一些测试demo: 1. Cloneable 深克隆和浅克隆 2. Compare 实现Compare和Comparator的区别 3. Hash Hash值比较、HashSet特点、Final特点 4. Iterator 迭代器的用法 5. KeyWord volatiled和...
另一个值得考虑的是多线程java.lang.ThreadLocal的实例。偷懒的做法是通过Java本身API实现单一实例,当然你也可以确保每一个线程都有自己的一个实例对象。 虽然Java没有提供一个很好的方法来管理java.util.Random的...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
│ 164个完整Java代码.zip │ J2EE综合--Struts常见错误的全面汇总.txt │ java程序员面试资料.zip │ JAVA笔试题(上海释锐).pdf │ MIME简介.txt │ SCJP试题详解.pdf │ SQL面试题_心灵深处.htm │ Struts+...
4锁的优化及注意事项 4.1有助于提高锁性能的几点建议 4.2java虚拟机对锁优化所做的努力 4.3人手一支笔:threadlocal 4.4无锁 4.5有关死锁的问题 4.2Java虚拟机对锁优化所做的努力 4.3人手一支笔:ThreadLocal 4.4...
3.3.3 ThreadLocal类 3.4 不变性 3.4.1 Final域 3.4.2 示例:使用Volatile类型来发布不可变对象 3.5 安全发布 3.5.1 不正确的发布:正确的对象被破坏 3.5.2 不可变对象与初始化安全性 3.5.3 安全发布的常用...
ThreadLocal->线程安全 范围报告5.0.5 用于测试数据维护的Excel工作表(数据提供者) 属性或Json作为配置文件 使用TestNg侦听器,例如注释转换器,ItestListener,IsuiteListener 在云或dockerizedSelenium网格...
ThreadLocal类 只读共享:不变对象一定是线程安全的 尽量将域声明为final类型,除非它们必须是可变的 分类 不可变对象 事实不可变对象 线程安全共享 封装有助于管理复杂度 线程...
工程名为service_classloader,功能全部使用corejava实现,使用maven管理依赖,没有使用任何框架(junit除外)。 使用的技术主要包括:classlaoder,加密解密,线程,ThreadLocal使用,反射,IO操作,jdbc, 序列化,...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
{1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{subsection.1.3.1} {1.4}数据类型}{23}{section.1.4} {...
oai-harvester2 oai-harvester2 开源软件 (OSS) 项目是一个提供 OAI-PMH ... 重写所有测试以使用新的 junit 并修复测试 URL。 Maven 存储库 这个包没有公共 Maven 存储库。 您必须构建并将其部署到您的 Maven 存储库。