Java并发编程
Java英雄之旅
这个作者很懒,什么都没留下…
展开
-
线程池的5种状态
线程池状态RUNNING:接受新任务并处理排队任务SHUTDOWN:不接受新任务,但处理排队任务STOP:不接受新任务、不处理排队任务、中断正在进行的任务TIDING:所有任务都已终止、workerCount为0时,线程会切换到TIDING、并运行 terminate() 钩子方法TERMINATED:terminate() 运行完成...原创 2020-05-05 08:27:06 · 445 阅读 · 0 评论 -
ThreadLocal 线程本地存储
如果想让同一个线程,不同的方法共享变量就可以使用 ThreadLocal,Java 提供的线程本地存储方案。ThreadLocal 可以保证同一个变量,该线程中的方法看到的值是一样,不同线程之间却是隔离。原创 2020-04-05 21:17:50 · 367 阅读 · 0 评论 -
说说 sleep() 方法和 wait() 方法区别和共同点?
Sleep()方法和wait()方法都用来**改变线程的状态**,能够让线程从运行状态,转变为休眠状态。但它们也存在一些需要注意的差别。原创 2020-01-26 22:32:09 · 1844 阅读 · 1 评论 -
什么是ThreadLocal?如何正确使用ThreadLocal?
多个线程同时读写同一个共享变量会造成并发问题,一种解决方案就是避免变量共享。我们可以使用**线程封闭**技术,即使用局部变量,每个线程都有各自的调用栈,局部变量就存在栈帧中,不会与其他线程共享。我们还可以使用线程本地存储ThreadLocal。原创 2020-01-23 17:00:45 · 2008 阅读 · 0 评论 -
Java线程生命周期,及线程状态转换
Java 的生命周期模型和通用的线程生命周期模型有所不同,它有初识状态、运行/可运行状态、休眠状态和终止状态,其中休眠状态细分为 BLOCKED、WATING、TIMED_WATING,共 6 中状态。原创 2020-01-22 13:50:34 · 459 阅读 · 0 评论 -
死锁怎么产生?死锁了怎么办?
死锁是指一组相互竞争的线程互相等待,导致「永久阻塞的现象」。如果死锁已经产生,可以使用jstack指令查看当前线程的堆栈信息,通过分析线程的运行情况排查死锁问题。解决死锁最好的方案是预防死锁,产生死锁有4个必要条件,我们只需要破坏其中的任一一条都能避免产生死锁。原创 2020-01-22 11:20:05 · 630 阅读 · 0 评论 -
Java内存模型与Hppens-Before规则
什么是Java内存模型?什么事Happens-before规则?原创 2020-01-22 10:57:47 · 236 阅读 · 0 评论