线程同步是什么:
是一种机制,一种在多线程环境下,确保同一时刻,只有一个线程可以执行共享资源的临界区代码
为什么要做线程同步:
因为在多线程环境下,多个线程同时对共享资源进行访问或写入的操作,可能会导致数据不一致,静态条件、死锁的问题的产生
需要怎么做:
通过加锁的方式,来实现临界区的代码在同一时刻只能被一个线程执行。
具体的实现
1、synchronized关键字,通过在方法或者代码块上添加synchronized关键字,实现同步机制
2、通过ReenTrantLock 类的lock()和unlock()方法实现
3、通过原子类实现,Java中的Atomic类提供了一系列的原子类, 如AtomicLong、AtomicDouble等,通过这些原子类,可以实现在不使用java代码加锁的形式实现同步机制,原理是这些原子类通过硬件级别的原子操作来实现操作的原子性。