多线程对同一个对象操做

多线程实现的两种方式:安全

  继承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();
View Code

两个线程传同一个对象,至关于这两个线程对同一个对象进行操做。spa

注意:多线程对同一个对象操做的时候必定要加锁synchronized,同时传一个锁旗标。线程

   加锁时,原则上要双重检查。code

   锁旗标对同一个对象有用,若是是两个对象,则这两个对象分别有本身的锁旗标,此时锁旗标就会失效。对象

   synchronized不只能够加在代码块上,还能够加在方法上。当加在方法上时,锁旗标是this,谁调用这个方法,this就是谁,只要是同一个对象就行。blog

   synchronized提升了安全性,下降了性能。

 

如有错误之处,欢迎指正。谢谢!

相关文章
相关标签/搜索