你的问题跟线程无关。
2不能编译室因为你在静态的方法里面引用this.
3我试过没问题啊。可以编译。

解决方案 »

  1.   

    2改为如下,可通过:
    public class A2 implements Runnable 

    public static void main(String[] args) 

    //Thread td1=new Thread(this); 
    //Thread td2=new Thread(this); 
    //Thread td1=new Thread(); 
    //Thread td2=new Thread(); 
    A2 ss=new A2();
    ss.run();
    Thread td1=new Thread(ss); 
    Thread td2=new Thread(ss); 
    td1.start(); 
    td2.start(); 

    public void run() 

    System.out.println("ok");

    }
      

  2.   

    为什么在静态的方法里面不能用this呢?
    另外,程序3真的不能编译啊~~
      

  3.   

    那么为什么我的就不能编译呢?
    你用的是哪个版本的JDK??
    我在用的就是1.4.2_03
      

  4.   

    静态方法中是不能用this的
    静态方法是对整个类进行操作,没有类实例,所以你要在静态主方法中对某个实例进行操作,必须先创建一个实例
    A example = new A();我也可以编译3
      

  5.   

    静态方法不需要对象,也不是对单独一个对象操作的。所以静态方法不能对this,super这些引用。你编译3出现什么错误?说来看看。
      

  6.   

    D:\javapj\A\A.java:16: cannot resolve symbol
    symbol  : variable td1 
    location: class A
    if(Thread.currentThread()==td1)
                                               ^
    D:\javapj\A\A.java:21: cannot resolve symbol
    symbol  : variable td1 
    location: class A
    td1.sleep(1000);
                                    ^
    D:\javapj\A\A.java:27: cannot resolve symbol
    symbol  : variable td2 
    location: class A
    if(Thread.currentThread()==td2)
                                               ^
    D:\javapj\A\A.java:32: cannot resolve symbol
    symbol  : variable td2 
    location: class A
    td2.sleep(2000);
                                    ^
    4 errors
    ----------------------------------------------------------
    以上的就是程序3的错误了~~
    麻烦大家看看
      

  7.   

    12同意楼上
    3是你的“现成 thread object”是局部变量,构造函数结束时,没有引地址了,你怎么调用RUN()呢,所以不行!
      

  8.   

    variable td1 
    variable td2 
    这个就是问题所在,它是局部变量、不是全局的!