Java——多线程
java并发/多线程学习记录
阿磊给给
武以快为尊,情以舍为尊,谋以忍为尊。
友以义为尊,家以和为尊,民以仁为尊。
展开
-
Java并发(多线程)——基础篇(线程异常处理)
demo地址:ThreadDemo: Java Thread Demorun()方法不允许throw exception,所有的异常必须在run方法内处理。对于 checked exception,使用try/catch块搞定;对于 unchecked exception,使用setUncaughtExceptionHandler处理。...原创 2021-11-18 14:21:41 · 159 阅读 · 0 评论 -
Java并发(多线程)——基础篇(线程副本)
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每个线程都可以执行属于自己的副本,而不会影响其他线程的副本。注意:使用ThreadLocal,一般都是声明在静态变量中,如果不断创建ThreadLocal而且没有调用其remove方法,将会导致内存泄漏。...原创 2021-11-18 14:08:15 · 450 阅读 · 0 评论 -
Java并发(多线程)——基础篇(守护线程)
守护线程,可以简单理解为后台运行线程。进程结束,守护线程就会结束,无需手动去操作相关状态。调用 setDaemon(true)即可将普通线程设置为守护线程。注意,该方法必须在启动线程前调用。JVM的垃圾回收、内存管理、数据库连接池等线程都是守护线程。*JRE判断程序执行结束的标准是所有前台线程(非守护线程)执行完毕,而不管守护线程状态。当非守护线程全部结束,即使仍有守护线程运行,进程仍将结束。...原创 2021-11-17 16:53:52 · 698 阅读 · 0 评论 -
Java并发(多线程)——基础篇(线程生命周期)
一、新建调用 new Thread();当创建Thread类的一个实例时,此线程进入新建状态。此时线程有自己的内存空间,但是并没有运行。此时线程不是活着的。二、就绪调用 start();线程已经被启动,等待被分配给CPU时间片。此时还没被分配到CPU,不一定会被立即执行,处于线程就绪队列。等待状态并不是执行状态。此时线程是活着的。三、运行run();线程获得CPU资源正在执行任务,此时除非线程自动放弃CPU资源或者有优先级更高的线程进入,否则线程一直运行到结束。此时线原创 2021-11-17 16:33:15 · 242 阅读 · 0 评论 -
Java并发(多线程)——基础篇(线程中断)
demo地址:ThreadDemo: Java Thread Demo一、Thread.stop()该方法强迫停止一个线程,并抛出一个新创建的ThreadDeath对象作为异常。此方法java版本已不建议使用。一、Thread.interrupt()相关方法1.public void interrupt():中断线程。是唯一能将中断状态设置为true的方法。2.public boolean isInterrupted():测试线程是否已经中断,即线程的中断标识,调用此方法能够原创 2021-11-17 15:09:46 · 116 阅读 · 0 评论 -
Java并发(多线程)——基础篇(线程实现的三种方法)
demo地址:ThreadDemo: Java Thread Demo一、extends Thread继承Thread类,弊端:一个java类只能继承一个父类(详见demo)二、implements Runnable实现Runnable接口,实现run()方法(详见demo)三、implements Callable实现Callable接口,实现call()方法(详见demo)...原创 2021-11-17 11:44:12 · 236 阅读 · 0 评论 -
Java并发(多线程)——概念篇(好处、注意事项)
一、充分利用CPU资源一个多线程的程序,可以CPU上并发执行,减少CPU的空闲时间,发挥CPU的运算能力,提高并发量。二、加快响应时间A程序执行过程十秒钟,B程序过程2秒钟,带给用户的体验感完全天差地别。三、代码模块化,异步化,简单化一般我们将业务的某个模块提取出来进行并发编程,降低代码耦合度,阅读起来也清晰明了;使用异步处理能大大提成前后端的响应时间(这个比较有局限性,举个栗子:假设用户签到后端处理逻辑分为两个模板,1.签到状态处理、2.用户相关业务表信息更改,那么签到状态处理原创 2021-11-17 11:22:59 · 322 阅读 · 0 评论 -
Java并发(多线程)——概念篇(程序、进程、线程、并行、并发)
笔者认为,学习java多线程,并不是上来会使用Thread、Runnable..就完事了,而是要从相关概念入手,了解什么是线程以及跟线程千丝万缕的知识点。这也是我兜兜转转绕了一大圈才有感而发的,可怜没师傅的孩子~一、程序定义:计算机能识别和执行的指令(参考:百度百科程序、进程)。理解:哦~指令..指令是个啥么东东?不就是我们编写的代码吗,搜嘎,这个我熟,public static void main(String[] args) ..注意了,既然是代码,那也就意味着程序是静态的,它是“死”的。原创 2021-10-25 14:14:16 · 197 阅读 · 0 评论