黑马程序员技术交流社区
标题:
多线程中this.getName()的问题?
[打印本页]
作者:
不似侽紸角.
时间:
2014-5-30 20:13
标题:
多线程中this.getName()的问题?
本帖最后由 不似侽紸角. 于 2014-6-2 19:33 编辑
今天在复习多线程的时候发现了一个问题,希望大家帮忙说下
为什么在死锁中用不了this.getName()方
<p>public class DeadLockTest {
public static void main(String[] args) {
Thread t1 =new Thread(new Test(true));
Thread t2 =new Thread(new Test(false));
t1.start();t2.start();
}
}
class Test implements Runnable{
private boolean flag;
Test(boolean flag){
this.flag=flag;
}
@Override
public void run() {
if(flag){
synchronized(Lock.locka){</p><p>//System.out.println(this.getName()+"----"+"if----a"); 为什么这里不能用this.getName()?而在其他时候可以用?
System.out.println(Thread.currentThread().getName()+"----"+"if----a");
synchronized(Lock.lockb){
System.out.println(Thread.currentThread().getName()+"----"+"if----b");
}
}
}else{
synchronized(Lock.lockb){
System.out.println(Thread.currentThread().getName()+"----"+"else-----b");
synchronized(Lock.locka){
System.out.println(Thread.currentThread().getName()+"----"+"else-----a");
}
}
}
}
}
class Lock{
static Object locka =new Object();
static Object lockb =new Object();
}</p>
复制代码
法
嗯 知道了这个不是Thread类所以不能用。
作者:
多一点
时间:
2014-5-30 20:43
this.getName()这样获取的是本类对象的名字,在API中是没有这样的方法的
this代表是本类创建的对象
而你要的是本线程的名字
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2