日期:2014-05-20  浏览次数:20659 次

我想得到此时线程的状态,然后输出来,但总是报错
//import java.lang.Thread.State;
public class MyThreadPrinter2 implements Runnable {   
  
    private String name;   
    private Object prev;   
    private Object self;   
  
    private MyThreadPrinter2(String name, Object prev, Object self) {   
        this.name = name;   
        this.prev = prev;   
        this.self = self;   
    }   
  
    @Override  
        public void run() {   
        int count = 10;   
        while (count > 0) {   
            synchronized (prev) {   
                synchronized (self) {   
                    System.out.print(name);   
                    count--;  
                    try{
                    Thread.sleep(1);
                    }
                    catch (InterruptedException e){
                     e.printStackTrace();
                    }
                    
                    self.notify();   
                }   
                try {   
                    prev.wait();   
                } catch (InterruptedException e) {   
                    e.printStackTrace();   
                }   
            }   
  
        }   
    }   

  
  
    public static void main(String[] args) throws Exception {   
        Object a = new Object();   
        Object b = new Object();   
        Object c = new Object();   
        MyThreadPrinter2 pa = new MyThreadPrinter2("A", c, a); 
       System.out.println(pa.getState().toString());               //就是这句,总是报错
        MyThreadPrinter2 pb = new MyThreadPrinter2("B", a, b);   
        MyThreadPrinter2 pc = new MyThreadPrinter2("C", b, c);   
           
           
        new Thread(pa).start();
        new Thread(pb).start();
        new Thread(pc).start();
System.out.println("wdwdwdwdwdwdwdwddddddddddddddw");}   
}  

------解决方案--------------------
应该是 Thread.currentThread().getState() ,而且这句话应该放到 线程的Run方法中
你放到main方法中不行吧,线程执行以后已经被调度了,main方法中执行完就被调度去了,你怎么知道它运行了没有?
------解决方案--------------------