多线程实现的两种方式:安全
继承Thread类多线程
实现Runnable接口ide
这两种方式都必须重写run()方法。性能
当多线程对同一个对象操做时,必须实现Runnable接口,而不能继承Thread类。由于继承Thread类实现多线程时,操做的是不一样的对象。this
1 Runnable r=new RunnableImpl(); 2 Thread t1=new Thread(r); 3 Thread t2=new Thread(r); 4 t1.start(); 5 t2.start();
两个线程传同一个对象,至关于这两个线程对同一个对象进行操做。spa
注意:多线程对同一个对象操做的时候必定要加锁synchronized,同时传一个锁旗标。线程
加锁时,原则上要双重检查。code
锁旗标对同一个对象有用,若是是两个对象,则这两个对象分别有本身的锁旗标,此时锁旗标就会失效。对象
synchronized不只能够加在代码块上,还能够加在方法上。当加在方法上时,锁旗标是this,谁调用这个方法,this就是谁,只要是同一个对象就行。blog
synchronized提升了安全性,下降了性能。
如有错误之处,欢迎指正。谢谢!