文章目录
线程安全
线程安全又叫线程同步,在Java中多个线程同时访问一个可共享的资源变量时,有可能会导致数据不准确,导致使用该变量的逻辑出现问题,因此使用同步锁来保证一个线程对该资源的操作完成之前,其他线程不会对其进行操作,即保证线程同步安全。
因此线程同步的本质就是线程排队,这可能跟它的字面意思相反,它的目的就是保证线程按照先后顺序一个一个的访问共享资源,为了避免同时操作同一个共享资源。
在Java中实现线程安全的主要手段有:
- synchronized 同步锁
- ReentrantLock 重入锁
- volatile 线程可见
- Atomic 原子类家族,如AtomicInteger、AtomicBoolean等
- ThreadLocal 本地副本
- Semaphore 信号量
- ReadLock/WriteLock 读写锁
- Concurrent 线程安全的集合类,如ConcurrentHashMap等
- BlockingQueue 阻塞队列
- CountDownLatch 计数器