线程安全问题

个人阅读理解

最近开发中碰到了一些有关线程安全的问题

当多个线程访问某一个类时(对象或者方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或者方法)就是线程安全的。

synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为“互斥区”或“临界区”

1.当多个线程同一个对象时我们可以用synchronized来让她同步一个一个的执行,但是会存在锁竞争的问题

当并发很大的时候程序可能会崩溃。

 

 

 

 

2.多个线程多个对象时我们可以加static synchronized来修饰,使其变为类的锁,这样虽然对象锁不一样,但还是达到了同步的方法,他将会一个线程一个线程的执行完

3.同步的目的是为了保证线程安全,它必须满足2个特性

        原子性(同步),可见性

     同步 synchronized                              异步asynchronized

    假如一个类中2个方法都是同步的,当2个线程同一个对象分别去访问2个方法时,那么他们必须一个方法一个方法的执行完--同步效果

    如果是一个同步,另一个没有被synchronized修饰(异步)的话,他将同时执行

 4.脏读 (比如setvalue和getvalue方法,当setvalue加锁而get没有加时会导致脏读)

5.synchronized锁重入

6.countdownLatch  实现一个线程必须等待其他几个线程执行完时在执行,构造器中参数(n:需要等待几个线程,每个线程都countdown一次代表一)

7.CycleBarrier   实现所有线程都准备好后同时进行,相当于定了一个起跑线

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值