Java的多线程(三)1.线程死锁(多个线程都占用了对方的锁资源,但不肯相让导致了死锁,在编程是一定要避免死锁的发生)2.下面操作会释放锁(1).当前线程的同步方法、同步代码块执行结束(2).当前线程在同步代码块、同步方法中遇到break、return(3).当前线程在同步代码块、同步方法中出现了未处理的Error或Exception,导致异常结束(4).当前线程在同步代码块、同步方法中执行了线程对象的wait()方法,当前线程暂停,并释放锁3.下面操作不会释放锁(1).线程执行同步代码块或同步方法时,程序调用Thread.sleep()、Thread.yield()方法暂停当前线程的执行,不会释放锁(2).线程执行同步代码块时,其他线程调用了该线程的suspend()方法将该线程挂起,该线程不会释放锁提示:应尽量避免使用suspend()和resume()来控制线程,方法不再推荐使用4.在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何同一时刻,最多有一个线程访问,以保证数据的完整性可以理解:线程同步即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作5.同步代码块synchronized(对象){ // 得到对象的锁才能操作同步代码// 需要被同步代码}6.synchronized可以放在方法声明中,表示整个方法-为同步方法public synchronized void m (String name){// 需要被同步的代码}