2020年3月7日

多线程 - 如何正确的终止线程?interrupt()、interrupted()、isInterrupted()区别?

摘要: 总结 java线程之间是协同式,不是抢占式 因为是协同式,所以线程之间都是“商量”着来,最佳实践是没有谁强迫谁终止的情况的,因此才会淘汰stop()方法,详见 多线程 - 为何要弃用stop() suspend()?(不过你硬要调用stop()就另当别论...) public void interr 阅读全文

posted @ 2020-03-07 21:52 frank_cui 阅读(892) 评论(0) 推荐(0)

多线程 - 线程状态与锁的释放

摘要: 不释放锁 线程执行同步代码块或同步方法时 程序调用Thread.sleep()、Thread.yield()方法暂停当前线程的执行,不释放锁; 线程执行同步代码块时,其它线程(线程B)调用该线程(线程A)suspend()方法将该线程(线程A)挂起,该线程(线程A)不会释放锁(同步监视器) 尽量避免 阅读全文

posted @ 2020-03-07 17:16 frank_cui 阅读(660) 评论(0) 推荐(0)

多线程 - 为何要弃用stop() suspend()?

摘要: stop弃用 stop()会释放所有的锁 stop()天生不安全,因为它会强制终止未结束的方法(包括run方法),不管run方法是否执行完了,并且还会释放这个线程所持有的所有的锁对象这会导致对象处于不一致状态。 例:从一个账户向另一个账户转账的过程中被终止,钱已经转出,但没有输入目标账户。 当线程要 阅读全文

posted @ 2020-03-07 17:12 frank_cui 阅读(581) 评论(0) 推荐(0)

多线程 - Thread.start() vs Thread.run()

摘要: 1.Thread.start和Thread.run是什么? start()方法 线程类的start()方法可以用来启动线程;该方法会在内部调用Runnable接口的run()方法,以在单独的线程中执行run()方法中指定的代码。 start()方法启动线程执行以下任务: 它创建了一个新线程 线程从N 阅读全文

posted @ 2020-03-07 15:17 frank_cui 阅读(466) 评论(0) 推荐(0)

多线程 - Executors.newXXXThreadPool()缺点

摘要: 通过Executor 的工具类,创建三种类型的普通线程池: https://blog.csdn.net/weixin_41891854/article/details/81265772 Executors 创造线程的缺点 https://blog.csdn.net/qq_31615049/artic 阅读全文

posted @ 2020-03-07 15:03 frank_cui 阅读(329) 评论(0) 推荐(0)

Java 基础 - 静态内部类 vs 非静态内部类

摘要: 内部类分类 匿名内部类 特点: 仅能被使用一次,创建匿名内部类时它会立即创建一个该类的实例,该类的定义会立即消失,所以匿名内部类是不能够被重复使用。 jdk1.8之前,当匿名内部类所在的方法的形参需要被匿名内部类里面使用时,该形参必须为final。原因:匿名内部类使用所在方法的变量时,是拷贝引用,并 阅读全文

posted @ 2020-03-07 13:14 frank_cui 阅读(344) 评论(0) 推荐(0)

导航

levels of contents