如何用三个不同的线程调用相同的方法

Var*_*run 0 java multithreading

假设我有一个名为Magic()的方法,我想用三个不同的线程执行这个方法.我知道如何用单个线程执行Magic()方法,但我很困惑,我如何处理三个不同的线程?

CKi*_*ing 5

假设我有一个名为Magic()的方法,我想用三个不同的线程执行这个方法

创建一个MagicTask表示task每个Thread将执行的类并调用其中的magic()方法run():

class MagicTask implements Runnable {
    public void run() {
        magic();
    }

    public void magic() { //do magic }

}
Run Code Online (Sandbox Code Playgroud)

然后创建三个线程并将任务传递给它:

Thread t1 = new Thread(new MagicTask());
Thread t2 = new Thread(new MagicTask());
Thread t3 = new Thread(new MagicTask());
Run Code Online (Sandbox Code Playgroud)

然后启动线程:

t1.start();
t2.start();
t3.start();
Run Code Online (Sandbox Code Playgroud)

注意您也可以将同一MagicTask实例传递给所有三个Thread实例.请记住,如果MagicTask状态在被不同线程访问时可能会变得不一致,那么您还需要通过使用内部锁定使用synchronized或其他此类构造超出此答案的范围来使您的类成为线程安全的.