黑马程序员技术交流社区
标题:
关于多线程的问题
[打印本页]
作者:
逆世界ylm
时间:
2014-12-18 16:43
标题:
关于多线程的问题
在我们实现Runnable接口来创建线程的时候,我们的同步代码块中使用This锁,这个This是指向我创建的线程对象,还是我实现的接口的类的对象??
然后就是我们可以通过继承Thread类类抽象线程这个概念,为什么还要有Runnable这个接口,这个接口它的用途到底在哪??
这两种方式创建线程,哪一种用的比较多,为什么??
作者:
后悔药
时间:
2014-12-18 18:16
第一个问题,This锁代表的是你同步代码块所在类的实例化对象;第二个问题,没有特许要求一般都实现Runnable接口,这是由于java的单继承性,如果类继承了Thread,那么这个类就不能继承其他类了,失去了扩展性
作者:
duluhua
时间:
2014-12-18 19:45
1.同步代码块的()里放的是对象,该对象的含义是:如果有多个同步代码块()内放的都是同一个对象,那么也就是说这几个同步代码块是一把锁。锁的机制就是 ,一个对象控制多个同步代码块。你可以在这里放this,this都是指的当前类的对象,是同一个对象。其实你也 可以这么写,类名.class 这是类的字节码对象,在内存中仅有一份
需要记住的是:同一个锁,同步代码块()内都是同一个对象,如果不是同一个对象就不是同一把锁了。
2.关于是使用new THread() 还是new Thread(new Runnable()),楼上说的很明白了。就是扩展性问题。使用接口的话扩展性要好一些。如果你的程序仅仅是开一个线程,没什么扩展性要求,那么使用new Thread也是一样的。
3.但是一般情况下都是使用的new RUnnable的方式的,这是一种好的习惯。就像写集合List list = new ArrayList()一样。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2