猿问

如何在不同线程中运行同一个类的不同方法?

我想了解如何在java中实现线程的方式。

现在我知道你可以使用runnable带有 run 方法的接口来实现线程。


但是,如果我想要同一个类有两个不同的线程,它们运行该类的不同方法,该怎么办?我只能覆盖 run 方法一次,所以我是否必须区分线程的名称,以便运行正确的方法?


public class PrintState {

    private int state = 0;


    public synchronized void printNewState() throws InterruptedException {

        wait();

        System.out.println(state);

    }


    public synchronized void setValue(int v) {

        state = v;

        notify();

        System.out.println("value set");

    }

}

我想要有两个线程同时运行这些方法printNewState(),setValue(12)每个线程都在不同的线程中。

如何run()在主方法中实现该方法和线程才能实现此目的?

之后的结果应该是:

value set

12


互换的青春
浏览 100回答 1
1回答

慕标琳琳

但是,如果我想要同一个类有两个不同的线程,它们运行该类的不同方法,该怎么办?我只能覆盖 run 方法一次,所以我是否必须区分线程的名称,以便运行正确的方法?您需要区分执行线程和正在执行的代码。您可以使用单个线程Runnable,run()并让 1000 个线程执行该线程Runnable。这意味着您有 1000 个线程执行相同的代码,尽管您可能只有一个Runnable实例来处理所有这些线程。我想要有两个线程同时运行 printNewState() 和 setValue(12) 方法,每个线程都在不同的线程中。你可以做这样的事情。请注意,我使用 lambda 来创建Runnables:PrintState ps = new ...Thread t1 = new Thread(ps::printNewState); //t1 will call printNewStateThread t2 = new Thread(() -> ps.setValue(12)); //t2 will call setValue(12)t1.start();t2.start();
随时随地看视频慕课网APP

相关分类

Java
我要回答