![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
文章平均质量分 79
dh2580
这个作者很懒,什么都没留下…
展开
-
交替打印奇偶的常见实现方式
关于交替打印奇偶数的代码实现网上已经很多了,这篇文章并不是提出新的实现方式,而是对网上现有的实现方式进行一个汇总,闲话不多说,直接上代码基于volatile的实现public class Main { private static volatile int num = 0; //是否打印奇数 private static volatile boolean isPri...原创 2020-04-03 15:16:42 · 453 阅读 · 0 评论 -
Java多线程之synchronized
多线程环境下,涉及到对于临界区代码的并发访问,有多种同步方位策略,其中synchronized作为最原始的一种同步访问策略存在已久。相比于API层面的Lock锁,synchronized是基于指令的语义层面的一种同步机制,通过在字节码中插入monitorenter、monitorenter指令来实现,相关使用以及具体实现会在下面阐述。synchronized 三种使用场景锁定对象,对一个对象...原创 2019-11-14 11:21:43 · 336 阅读 · 0 评论 -
Java多线程之volatile变量
在Java中,同步机制有很多种,其中volatile变量被称作为”轻量级“的同步机制,之所以被称之为”轻量级“同步机制,是因为在和sychronized关键词进行对比之下,volatile变量所需要的代码和运行时开销更少。当然,因为是”轻量级“的同步机制,volatile变量所具备的功能也仅仅是sychronized的一部分。例如,volatile能够保证内存的可见性,并不能够保证操作的原...原创 2018-08-16 16:27:29 · 620 阅读 · 0 评论 -
Java多线程之线程停止的正确方式
在开发中,经常会遇到需要停止一个正在运行的线程的场景,以前的做法是通过Thread.stop() 的方式来停止具体的线程,但是这个方法目前是被废弃掉的,不推荐使用。不推荐使用的原因如下:1、该方式是通过立即抛出ThreadDeath异常来达到停止线程的目的,而且此异常抛出可能发生在程序的任何一个地方,包括catch、finally等语句块中。2、由于抛出ThreadDeatch异常...原创 2018-08-17 15:06:08 · 16674 阅读 · 2 评论 -
JDK8 CompletableFuture常用Api使用梳理
在JDK8中,CompletableFuture作为一个全新的任务执行框架类,它可以通过简单的api实现任务的异步执行、任务之间的协同、以及任务编排等功能。在CompletableFuture中,每个任务可以被同步的执行、也可以被异步的执行(通过提交到线程池中来实现)。在CompletableFuture中,几乎每一个操作都有三套API,API形式如:xxx(...)、xxxAsy...原创 2018-10-22 10:50:01 · 1138 阅读 · 0 评论 -
Java多线程之ThreadLocal
前言在多线程环境下进行开发时,经常会遇到这样的一种场景,就是在使用某个非线程安全的类时,鉴于线程安全问题,因此会在每次使用时,创建一个新的实例对象,典型的例子就是SimpleDateFormat日期格式化类。即使是对于同一个线程内而言,在每次使用时都会创建一个新的实例对象,这无疑会造成重复创建对象的情况,并会带来一定的性能损耗,在Web应用中尤为常见。线程安全是针对于多个线程共享使用同一实例对...原创 2019-10-11 11:13:19 · 305 阅读 · 1 评论