为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

互换的青春 2024-01-17 21:04:10
我想了解如何在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();


查看完整回答
反对 回复 2024-01-17
  • 1 回答
  • 0 关注
  • 42 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信