Var*_*run 0 java multithreading
假设我有一个名为Magic()的方法,我想用三个不同的线程执行这个方法.我知道如何用单个线程执行Magic()方法,但我很困惑,我如何处理三个不同的线程?
假设我有一个名为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或其他此类构造超出此答案的范围来使您的类成为线程安全的.