本帖最后由 不似侽紸角. 于 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类所以不能用。
|