java中哪些线程是安全的,实现线程安全的四种方式

  java中哪些线程是安全的,实现线程安全的四种方式

  一般来说,至少需要两个特征来实现线程安全:原子性可见性。

  实施模式:

  1)使用synchronize:它是原子的,可见的,所以如果使用synchronize修饰的操作,它会自带可见性。synchronized使用悲观锁来实现线程安全;

  2)使用原子类代替基本数据类型,原子类使用乐观锁实现线程安全,在多线程环境中执行A可以使用AtomicInteger类的incrementAndGet()方法实现,该方法也使用volatile保证可见性;使用Unsafe调用native local方法CAS,CAS采用总线锁或缓存锁保证原子性;

  在线视频教程推荐:java视频教程

  3)使用volatile关键字,volatile不一定具有原子性,比如用volatile修改的变量执行or-operating (num)。我们需要让volatile修改的变量具有原子性,所以一般可以设置在布尔变量上,如下:

  可变布尔标记=true

  1线程while(标记){ };

  2 thread while(标记){ };如果一个变量增加或减少,我们可以使用AtomicInteger。

  4)使用ThreadLocal隔离每个线程;

  5)我们也可以使用其他锁,比如ReentrantLock,来保证线程安全;

  6)我们还可以使用临界区、互斥和信号量来保证线程安全。

  本文由java入门学习专栏推荐,欢迎大家一起学习交流。这就是如何在java中实现线程安全的细节。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: