## thread实现两种方式:继承Thead和实现runnable接口
记住:new Thread().start() 和 new Thread.run()方法截然不同:
start会启动多线程跑,而run方法只是一个普通的运行方法,由主线程阻塞执行。
## synchronized是java的关键字,安全,但效率低。
当某个线程锁抛异常时,jvm会自动释放当前锁。
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(); } }