使用"这个"在Thread构造函数中

时间:2014-08-18 10:28:56

标签: java multithreading constructor this

有人可以解释一下“this”的含义“th =新主题(这个,名称);”以下程序是什么意思?当前使用的Thread构造函数是Thread(Runnable threadOb,String name)。为什么我必须在上面的表达中使用“this”这个词?例如,如果我写“th = new Thread(newOb,name);”,则eclipse提及ob无法解析为变量。在这种情况下,我是否总是必须使用“this”,如果是这样,为什么? 非常感谢提前。

class MyThread implements Runnable{
    int count;
    Thread th;

    MyThread(String name){
        th = new Thread( newOb, name);
        count =0;
        th.start();
    }

    public void run(){
        System.out.println(th.getName() + " starting ");
        try{
            do{
                Thread.sleep(500);
                System.out.println(" in " + th.getName() + " count is " + count);
                count++;
            }while(count<5);
        }
        catch(InterruptedException e){
            System.out.println(e);
        }
        System.out.println(th.getName() + " terminating");
    }
}
public class UseThreads {

    public static void main(String[] args) {

System.out.println("main thread");

        MyThread mt = new MyThread("thread1");

        do{
            System.out.println(".");
            try{
                Thread.sleep(100);
            }
            catch(InterruptedException e){
                System.out.println(e);
            }
        }while(mt.count!=5);

        System.out.println("main thread terminating ");
    }
}

1 个答案:

答案 0 :(得分:0)

this代表 curent 上下文中的当前对象。 this可以根据上下文进行更改。例如,在run()方法中,如果您创建并实例化匿名内部类,那么在该类中,this将与this方法中的run()不同。

为什么在需要Runnable对象时使用此功能? 你有:

class MyThread implements Runnable{

因此,在MyThread(String name)中,这将是MyThread的当前实例。 由于MyThread实现Runnable,所有MyThread个实例也都是Runnable,因此,可以使用此实例代替Runnable的实例

示例:

SomeObject obj = new SomeObject();
obj.doSomething();


private void doSomething(){
// here this is implicitly set to obj i.e, the calling object
}