1、 当一个线程对共享的数据进行操作时,应使之成为一个”原子操作“,即在没有完成相关 操作之前,不允许其他线程打断它,否则,就会破坏数据的完整性,必然会得到错误的处理结 果,这就是线程的同步。
2、 在多线程应用中,考虑不同线程之间的数据同步和防止死锁。当两个或多个线程之间同时 等待对方释放资源的时候就会形成线程之间的死锁。为了防止死锁的发生,需要通过同步来实 现线程安全。
3、 线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程 都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必 须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步。
4、 线程间的同步方法大体可分为两类:用户模式和内核模式。顾名思义,内核模式就是指利 用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态,而用户模式就是不需 要切换到内核态,只在用户态完成操作。
5、 用户模式下的方法有:
原子操作(例如一个单一的全局变量),临界区。内核模式下的方法有:事件,信号量,互斥量。
实现线程同步的方法
1、 同步代码方法:sychronized关键字修饰的方法
2、 同步代码块:sychronized关键字修饰的代码块
3、 使用特殊变量域volatile实现线程同步:volatile关键字为域变量的访问提供了 一种免 锁机制
4、 使用重入锁实现线程同步:reentrantlock类是可冲入、互斥、实现了 lock接口的锁他 与sychronized方法具有相同的基本行为和语义
Was this helpful?
0 / 0