深入理解JAVA虚拟机阅读笔记6——线程安全与锁优化

线程安全:如果一个对象可以安全的被多个线程同时使用,那它就是线程安全的。

一、Java中的线程安全

1.不可变

  不可变的对象一定是线程安全的。String、枚举类型、java.lang.Number的部分子类如Long和Double等数值包装类型,BigInteger和BigDecimal等大数据类型。

  AtomicInteger和AtomicLong并非是不可变的。

2.绝对线程安全

  如Vector类是线程安全的,但是如果多个线程同时对Vector数据进行增加或者减少,那么Vector线程不是绝对线程安全的。

3.相对线程安全

  单独操作是线程安全的,连续操作需考虑同步问题。

4. 线程兼容

5. 线程独立

二、线程安全的实现方法

1. 互斥同步

同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个(或者一些)线程使用。

扫描二维码关注公众号,回复: 1733356 查看本文章

互斥是实现同步的一种手段,临界区(Critical Section)、互斥量(Mutex)和信号量(Semaphore)都是互斥实现方式。

互斥是因,同步是果;互斥是方法,同步是目的。

猜你喜欢

转载自www.cnblogs.com/bopo/p/9219655.html
今日推荐