如何将下面的示例转换为实现可运行接口和覆盖运行方法



我有2个简单的类,像下面的。然而,我想在类声明中实现可运行接口,而不是在线程对象声明中使用它。然而,我未能喘息如何将其转换成上述格式。

public class Main{
    static Runner r1 =new Runner();
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Thread t1 = new Thread (new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    r1.firstThread();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
        Thread t2 = new Thread (new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    r1.secondThread();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }
}

public class Runner {
    public void firstThread() throws InterruptedException
    {
    }
    public void secondThread() throws InterruptedException
    {
    }
}

您已经传递了一个实现Runnable的对象,尽管它是一个匿名类。

没有什么可以阻止你把它拉到一个"命名"类中,例如

public class RunnerFirstAction implements Runnable {
    private Runner runner;
    public RunnerFirstAction(Runner runner) {
        this.runner = runner;
    }
    @Override
    public void run() {
        runner.first();
    }
}
public class RunnerSecondAction implements Runnable {
    private Runner runner;
    public RunnerSecondAction(Runner runner) {
        this.runner = runner;
    }
    @Override
    public void run() {
        runner.second();
    }
}

public class Main{
    static Runner r1 =new Runner();
    public static void main(String[] args) {
        Thread t1 = new Thread (new RunnerFirstAction(runner));
        Thread t2 = new Thread (new RunnerSecondAction(runner));
        //....
    }
}

相关内容

最新更新