## thread實現兩種方式:繼承Thead和實現runnable接口java
記住:new Thread().start() 和 new Thread.run()方法大相徑庭:安全
start會啓動多線程跑,而run方法只是一個普通的運行方法,由主線程阻塞執行。多線程
## synchronized是java的關鍵字,安全,但效率低。jvm
當某個線程鎖拋異常時,jvm會自動釋放當前鎖。ide
public class MySynchronized { public static void main(String[] args) { final MySynchronized mySynchronized1 = new MySynchronized(); final MySynchronized mySynchronized2 = new MySynchronized(); new Thread("thread-1"){ public void run(){ synchronized (mySynchronized1){ try { System.out.println(this.getName()+":start"); int a = 1/0;//出現異常時,jvm釋放鎖 Thread.sleep(3000); System.out.println(this.getName()+":sleep"); System.out.println(this.getName() + ":end"); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); new Thread("thread-2"){ @Override public void run() { synchronized (mySynchronized1){//同一把鎖,會等待 //synchronized (mySynchronized2){// System.out.println(this.getName()+":start22"); } } }.start(); } }