在不同的线程中运行类方法

时间:2015-06-16 20:17:35

标签: java multithreading object methods

我们假设我有这门课程:

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(),而不是在线程中使用它的输出。

2 个答案:

答案 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 Theadstart()的所有内容。

答案 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();
}
}