黑马--多线程
FutureTask的 cancel(boolean mayInterruptIfRunning) 方法是中断线程执行的方法,传入false表示不允许中断正在执行的线程,true则表示允许中断。
isCancelled方法表示任务是否被取消成功,如果在任务正常完成前被取消成功,则返回 true。
isDone方法表示任务是否已经完成,若任务完成,则返回true;
windows下: JDK提供的查看java线程的方法jps,杀死进程的方法taskkill /F /PID xxxx
4.睡眠的线程被唤醒
4.3根据interrupt方法的两阶段终止设计模式如图4-3,因为在执行sleep的时候会清除终止标记所以在catch中重新标记清楚状态为true
4.4 interrupt会影响park方法的执行如图4-4
图4-1,
图4-4
5.线程睡眠的方法尽量替换成 TimeUnit.SECONDS.sleep(1); 这种方式可读性高一点
6.yield方法
(1).是会把当前调用此方法的线程执行权交出去,会把当前线程从运行状态变成就绪状态。
7.join()方法 等待线程运行结束 主线程等待t1线程运行结束 join(long xxx)方法是限时等待
10.3 引用暴漏 在子类上覆盖父类方法也可能会出现线程安全问题。
12.偏向锁:
偏向状态:
如图 12-2 添加了参数 -XX:BiasedLockingStartupDelay=0 关闭延迟开启偏向锁,在同步代码块中将线程id写入对象头,在同步代码结束后对象头中依然存在线程id说明当前锁偏向这个id线程。
如图 12-7批量撤销操作40次:JVM就会觉得自已确实错了,就不该批量偏向,40次之后的默认对象将不再是偏向状态,而是不可偏向状态。
图 12-1
图 12-2
图12-5
如图15-6
图13-1
原理:
13.2 利用wait/notify 设计 保护暂停模式,该模式的特点就是一对一的生产和消费,
13.3 利用 wait/notify 设计生产者消费者模式,该模式的特点不是一对一的生产和消费,而是多对多,只要生产出了产品消费者竞争到资源就可以进行消费
图14-1
特点:
代码演示:
15.1.查看死锁的工具 打开IDEA Terminal控制台
JVM死锁提示:
15.ReentrantLock S
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 多线程并发知识库 JAVA线程实现/创建的四种方式 1.继承Thread类 Thread类本质上是实现了Runna...
- 线程的基本操作 用new关键字创建一个线程对象,然后调用它的start()启动线程即可。 线程有个run()方法,...
- Java-Review-Note——4.多线程 标签: JavaStudy PS:本来是分开三篇的,后来想想还是整...