并发多线程
并发多线程
我_是_太_阳
不满足是向上的车轮
展开
-
线程安全问题
a++造成运行结果错误原因分析:首先我们有两个线程,在做i++的时候,看似是一条语句,实际上是三个步骤在执行。假设最开始 i 的值是1,理论估计在经过两个线程之后,i 的值应该为3。但是实际上结果是2,那么具体的流程是怎样的呢 ?第一个线程在拿到1之后把它加了,但是并没有立刻把它写进去,导致第二个线程在拿的时候,由于第一个线程的值虽然计算完毕了,但是没有告诉任何人,因此第二个线程拿到的还是1...原创 2020-04-02 10:17:49 · 190 阅读 · 0 评论 -
线程属性
面试问题:原创 2020-04-01 08:31:50 · 124 阅读 · 0 评论 -
Thread和Object类中的重要方法详解
方法概览Wait 和 Notifypackage threadcoreknowledge.threadobjectclasscommonmethods;/** * 描述: 展示wait和notify的基本用法 1. 研究代码执行顺序 2. 证明wait释放锁 */public class Wait { public static Object object = n...原创 2020-03-31 14:28:31 · 409 阅读 · 0 评论 -
线程的生命周期
New 、Runnable、Blocked 、Waiting、Timed Waiting、Terminated查看线程的六种状态:Stream.of(Thread.State.values()).forEach(System.out::println);New代表已创建但还没启动的新线程。就是指当我们new Thread之后还没有调用start()方法。此时线程就处于new这个状态。事实...原创 2020-03-30 10:31:28 · 193 阅读 · 0 评论 -
错误停止线程
被弃用的stop、suspend、resume方法。为什么Thread.stop会被弃用从SUN的官方文档可以得知,调用Thread.stop()方法是不安全的,这是因为当调用Thread.stop()方法时,会发生下面两件事:即刻抛出ThreadDeath异常,在线程的run()方法内,任何一点都有可能抛出ThreadDeath Error,包括在catch或finally语句中。...原创 2020-03-29 15:42:53 · 157 阅读 · 0 评论 -
正确停止线程
原理介绍:使用interrupt来通知,而不是强制 核心:想要停止线程其实是如何运用interrupt来通知那个线程,以及被停止的线程如何配合。我们作为想停止线程的一方,根本没有能力去强行停止。由于我们想要终端的是其他的线程,这个线程很有可能不是我们来写的,我们或许对这个正在运行的线程的业务逻辑根本就不熟悉,我们想让它停止,其实是希望他完成了一系列的保存、交接工作再停止,而不希望它立刻停...原创 2020-03-29 10:26:48 · 273 阅读 · 0 评论 -
start()方法和run()方法
一、start()方法1、start()方法含义 1、启动新线程。当我们执行了start()方法之后这个线程不一定会立刻执行,其实是在告诉jvm中的线程调度器在合适的时间去启动。例如:我们可能会创建两个线程,分别是线程1和线程2,但线程1先调用start()方法,线程2后调用,缺发现线程2先执行,这其实是不违背启动顺序的。也就是说调用start()方法的顺序并不能决定执行的顺序。2、一个...原创 2020-03-28 20:48:54 · 4259 阅读 · 0 评论 -
实现多线程的正确姿势
网上和书籍的各种方法:鱼龙混杂原创 2020-03-09 18:20:15 · 1419 阅读 · 0 评论