线程安全之Synchronized关键字

本文探讨了多线程环境下线程安全问题的原因,重点介绍了Java中Synchronized关键字的作用和用法,包括其作为锁的机制、三种加锁方式,并通过实例展示了如何解决共享变量并行修改导致的安全问题。
摘要由CSDN通过智能技术生成

 

1 多线程下为什么会存在线程安全问题

线程的合理使用能够提升程序的处理性能,一是能够利用多核 CPU 来实现线程的并行执行,二是线程的异步化执行能够提高系统的吞吐量。

虽然线程有这些优点,但同时也带来了很多问题。比如说:

1.1 共享变量带来的安全性问题

先来看个图:

 

一个变量 i ,如果线程 A 或者线程 B 单独访问并且修改变量 i 的值没有任何问题,那如果并行的修改变量 i ,那就会有安全性问题。

然后用代码来模拟一下这种场景,为了更好的看到效果,我用100个线程:

 
public class ThreadDemo1 {      private static int i = 0;      public static void inc() {         try {             Thread.sleep(1);         } catch (InterruptedException e) {             e.printStackTrace();         }         i++;     }      public static void main(String[] args) throws In
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值