JAVA多线程-线程的同步与锁

来源:互联网 发布:自制51单片机最小系统 编辑:程序博客网 时间:2024/06/10 07:49

线程的同步与锁

l线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。

1、线程同步的目的是为了保护多个线程反问一个资源时对资源的破坏。

2、线程同步方法是通过锁来实现,每个对象都有且仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对象的线程就无法再访问该对象的其他同步方法。

3、对于静态同步方法,锁是针对这个类的,锁对象是该类的Class对象。静态和非静态方法的锁互不干预。一个线程获得锁,当在一个同步方法中访问另外对象上的同步方法时,会获取这两个对象锁。

4、编写线程安全的类,需要时刻注意对多个线程竞争访问资源的逻辑和安全做出正确的判断,对“原子”操作做出分析,并保证原子操作期间别的线程无法访问竞争资源。

5、当多个线程等待一个对象锁时,没有获取到锁的线程将发生阻塞。

6、死锁是线程间相互等待锁锁造成的,一旦程序发生死锁,程序将死掉。