
线程
代码玩家
学习,积累,总结,应用。
展开
-
Java原生线程池使用的总结
本人对于线程知识不是特别了解,以下内容只是个人在实际开发中一些感悟,若有不足之处,希望能帮忙指正。对于线程的使用,若是有大量的开销情况下,不妨可以使用线程池,有效的控制开销,能使效率达到最优,从而提高效率。线程池可能有很多的实现类,但本文只对:java.util.concurrent包下的ThreadPoolExecutor类进行简单的说明。我们可以创建一个ThreadPoolExec...原创 2018-08-08 21:41:01 · 1009 阅读 · 0 评论 -
章节:2. 2. 18 内容:同步synchronized方法无限等待问题与解决方案
Java多线程编程核心技术(第二版),2. 2. 18,学习笔记内容:同步synchronized方法无限等待问题与解决方案死锁demo:Service.javapublic class Service { synchronized public void methodA() { System.out.println(" methodA begin"); boolea...原创 2019-12-26 23:43:45 · 196 阅读 · 0 评论 -
章节:2.2.14 静态同步synchronized方法
Java多线程编程核心技术(第二版),2.2.14,学习笔记情况:synchronized关键字加到static方法和加到 非 static 方 法上的效果都是同步, 但 两者 还是 有 本质上 的 不同, synchronized 关键字 加到 static 静态 方 法上 的 方式 是将 Class 类 对象 作为 锁, 而 synchronized 关键字 加到 非 static 静态 ...原创 2019-12-26 23:08:02 · 122 阅读 · 0 评论 -
章节:2. 2. 12 结论:当其他线程执行x对象中synchronized 同步方法时呈同步效果
Java多线程编程核心技术(第二版),章节:2. 2. 12 学习笔记内容:当其他线程执行x对象中synchronized 同步方法时呈同步效果demo代码:MyObject.javapublic class MyObject { synchronized public void speedPrintString() { System.out.println(" sp...原创 2019-12-26 22:34:59 · 111 阅读 · 0 评论 -
章节:1. 12. 2,内容:suspend() 方法 与 resume() 方法的缺点—— 独占
Java多线程编程核心技术(第二版),1. 12. 2,学习笔记内容:suspend() 方法 与 resume() 方法的缺点—— 独占两个线程调用同一个对象的同步方法,然后其中一个线程在该方法中暂停了,并且没有释放该对象,导致一直暂用,而另一个线程一直在等待的现象。第一种情况:demo1代码:SynchronizedObject.javapublic class...原创 2019-12-16 22:21:04 · 153 阅读 · 0 评论 -
章节:1. 11. 7,内容:使用stop() 释放锁给数据造成不一致的结果
Java多线程编程核心技术(第二版),章节:1.11.7 ,学习笔记内容:使用stop() 释放锁给数据造成不一致的结果stop()方法已经被标记为已过期方法,原因是:它对锁定的对象进行“ 解 锁”,会导致数据得不到同步的处理,进而出现数据不一致 的问题。(相当于同步失效,导致数据有问题)验证方案:(个人画的草图,可能有问题)demo代码:MyService.java...原创 2019-12-15 22:15:17 · 324 阅读 · 0 评论 -
判断线程是否为停止状态
JAVA中有两种判断线程停止的方法:1) public static boolean interrupted(): 测试 currentThread() 是否已经中断。2) public boolean this. isInterrupted(): 测试 this 关键字所在类的对象是否已经中断。第一种:public static boolean interrupted():测...原创 2019-12-15 11:27:09 · 907 阅读 · 0 评论 -
章节: 1.9 ,内容:Thread.getAllStackTraces()方法
Java多线程编程核心技术(第二版),章节:1.9 ,学习笔记介绍:static Map< Thread, StackTraceElement[]> getAllStackTraces() 方法 的 作用 是 返回 所有 活动 线程 的 堆栈 跟踪 的 一个 映射。 映射 键 是 线程, 而每 个 映射 值 都是 一个 StackTraceElement 数组, 该数 组 表示 相...原创 2019-12-13 00:03:31 · 1782 阅读 · 1 评论 -
章节:1.7, 内容:StackTraceElement[] getStackTrace()方法,用于跟踪被调用的栈方法
Java多线程编程核心技术(第二版),章节:1.7, 学习笔记简介:StackTraceElement[] getStackTrace()方法的作用是返回一个表示该线程堆栈跟踪元素 数组。如果该线程尚未启动或已经终止,则 该方法将返回一个零长度数组。如果 返回 的数组不是零长度的,则其第一个元素代表 堆栈 顶,它是该数组中最新的方法调用。 最后一个元素代表堆栈底,是该数组中最旧的方法调用。...原创 2019-12-12 23:37:36 · 697 阅读 · 0 评论 -
章节:1.2.4,内容:执行start() 的 顺序不代表执行run()的顺序
Java多线程编程核心技术(第二版),章节:1.2.4, 学习笔记证明:执行start() 的 顺序不代表执行run()的顺序demo代码:import java.util.ArrayList;import java.util.List;/** * 证明执行start()方法的顺序与执行run()方法顺序无关 * @author phil * */class Run...原创 2019-12-09 23:44:54 · 224 阅读 · 0 评论