从线程中创建线程的类调用方法

时间:2017-11-23 11:13:42

标签: java multithreading

我想在RunnerClass中调用一个方法,在ThreadClass中以非静态方式调用。

parseMissingKeyHandler

显然这不起作用。该方法不是静态的(我不允许将其设置为静态),但在上面的示例中,我试图以静态方式访问它,只是因为我认为它最能代表我想要做的事情。
如果它有意义,我希望线程能够通知CallingClass的实例,它需要调用someMethod()

有没有一种巧妙的方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

你可以使用ThreadClass作为CallingClass的内部类,并直接调用mothod。

1509075042823 12.91877675 80.0466234--> first iteration
1509075042823 12.91877675 80.0466234--> Second iteration--->Array Size -->1
1509074972821 12.91738175 80.05294765--> first iteration
1509074972821 12.91738175 80.05294765--> Second iteration--->Array Size -->1
1509073795109 13.05561879 80.11920979--> first iteration
1509073795109 13.05561879 80.11920979--> Second iteration--->Array Size -->1
1509075132826 12.97988349 80.16310309--> first iteration
1509075132826 12.97988349 80.16310309--> Second iteration--->Array Size -->1
1509073885111 13.06640175 80.2457003--> first iteration
1509073885111 13.06640175 80.2457003--> Second iteration--->Array Size -->1

答案 1 :(得分:2)

创建获取ClassTwo类型参数的CallingClass构造函数怎么样?

public class ThreadClass extends Thread{
    CallingClass callingClass;

    public ThreadClass(CallingClass callingClass) {
            this.callingClass = callingClass;
    }
    public void run(){
        //Some thread logic
        callingClass.someMethod();
    }
}

并像这样创建ClassTwo

public class CallingClass{
    CallingClass(){
        ClassTwo thread = new ClassTwo(this);
        thread.start();
    }

    public void someMethod(){}

}