摘要: 线程的生命周期 线程包括哪些状态的问题说专业一点就是线程的生命周期。 不同的编程语言对线程的生命周期封装是不同的。 Java 中线程的生命周期 Java 语言中线程共有六种状态。 如图: Java 中线程的状态的转变 1. NEW 到 RUNNABLE 状态 Java 刚创建出来的 Thread 对 阅读全文
posted @ 2019-11-28 11:34 ConstXiong 阅读(1064) 评论(0) 推荐(0) 编辑
摘要: 线程终止有两种情况: 这两者属于线程自行终止,如何让线程 A 把线程 B 终止呢? Java 中 Thread 类有一个 stop() 方法,可以终止线程,不过这个方法会让线程直接终止,在执行的任务立即终止,未执行的任务无法反馈,所以 stop() 方法已经不建议使用。 既然 stop() 方法如此 阅读全文
posted @ 2019-11-28 11:29 ConstXiong 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 线程的安全性问题体现在: 原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性 可见性:一个线程对共享变量的修改,另外一个线程能够立刻看到 有序性:程序执行的顺序按照代码的先后顺序执行 导致原因: 缓存导致的可见性问题 线程切换带来的原子性问题 编译优化带来的有序性问题 解决办法: JDK 阅读全文
posted @ 2019-11-28 11:20 ConstXiong 阅读(3253) 评论(0) 推荐(0) 编辑
摘要: CPU、内存、IO 设备的读写速度差异巨大,表现为 CPU 的速度 > 内存的速度 > IO 设备的速度。 程序的性能瓶颈在于速度最慢的 IO 设备的读写,也就是说当涉及到 IO 设备的读写,再怎么提升 CPU 和内存的速度也是起不到提升性能的作用。 为了更好地利用 CPU 的高性能 计算机体系结构 阅读全文
posted @ 2019-11-28 11:19 ConstXiong 阅读(395) 评论(0) 推荐(0) 编辑
摘要: Java 中的线程对应是操作系统级别的线程,线程数量控制不好,频繁的创建、销毁线程和线程间的切换,比较消耗内存和时间。 容易带来线程安全问题。如线程的可见性、有序性、原子性问题,会导致程序出现的结果与预期结果不一致。 多线程容易造成死锁、活锁、线程饥饿等问题。此类问题往往只能通过手动停止线程、甚至是 阅读全文
posted @ 2019-11-28 11:17 ConstXiong 阅读(338) 评论(0) 推荐(0) 编辑