我想了解如何在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 set12
1 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
但是,如果我想要同一个类有两个不同的线程,它们运行该类的不同方法,该怎么办?我只能覆盖 run 方法一次,所以我是否必须区分线程的名称,以便运行正确的方法?
您需要区分执行线程和正在执行的代码。您可以使用单个线程Runnable,run()并让 1000 个线程执行该线程Runnable。这意味着您有 1000 个线程执行相同的代码,尽管您可能只有一个Runnable实例来处理所有这些线程。
我想要有两个线程同时运行 printNewState() 和 setValue(12) 方法,每个线程都在不同的线程中。
你可以做这样的事情。请注意,我使用 lambda 来创建Runnables:
PrintState ps = new ...
Thread t1 = new Thread(ps::printNewState); //t1 will call printNewState
Thread t2 = new Thread(() -> ps.setValue(12)); //t2 will call setValue(12)
t1.start();
t2.start();
添加回答
举报
0/150
提交
取消