我们假设我有这门课程:
localhost
我想知道是否有办法同时在不同的线程中运行所有3种方法。
有没有办法创建课程public class Myclass {
method1();
method2();
method3();
}
:
MyThread
它可以接受作为参数public class MyThread{
//implementation
}
这样我的主要功能看起来像这样:
myclass::method1()
我希望public static void main(String[] args) {
Myclass myclass = new Myclass();
MyThread mythread1 = new MyThread();
MyThread mythread2 = new MyThread();
MyThread mythread3 = new MyThread();
mythread1(myclass.method1());
mythread2(myclass.method2());
mythread3(myclass.method3());
}
在一个线程中运行mythread()
,而不是在线程中使用它的输出。
答案 0 :(得分:1)
如果您使用的是Java 8,则可以执行以下操作:
public static void main(String[] args) {
new Thread(MyClass::method1).start();
new Thread(MyClass::method2).start();
new Thread(MyClass::method2).start();
}
在Java 7及以下版本中,语法更多:
public static void main(String[] args) {
new Thread (new Runnable () {
@Override
public void run ()
{
method1 ();
}
}).start();
}
我只展示了一种简洁方法 - 对于您要调用的每种方法,您必须重复从new Thead
到start()
的所有内容。
答案 1 :(得分:1)
public class HelloRunnable implements Runnable {
private MyClass myClass;
private boolean execMethod1;
private boolean execMethod2;
private boolean execMethod3;
public HelloRunnable(MyClass myClass, boolean execMethod1, boolean execMethod2, boolean execMethod3) {
this.myClass = myClass;
this.execMethod1 = execMethod1;
this.execMethod2 = execMethod2;
this.execMethod3 = execMethod3;
}
public void run() {
if(execMethod1) myClass.method1();
else if(execMethod2) myClass.method2();
else if(execMethod3) myClass.method3();
}
public static void main(String args[]) {
MyClass myClass = new MyClass();
(new Thread(new HelloRunnable(myClass, true, false, false))).start();
(new Thread(new HelloRunnable(myClass, false, true, false))).start();
(new Thread(new HelloRunnable(myClass, false, false, true))).start();
}
}