1. ホーム
  2. java

[解決済み] Javaで別スレッドでメソッドを呼び出すには?

2022-05-01 23:07:23

質問

例えば、あるメソッドがあるとします。 doWork() . どのように私は別のスレッド(メインスレッドではない)からそれを呼び出すのですか。

どのように解決するのですか?

を実装したクラスを作成します。 Runnable インターフェイスを使用します。実行したいコードを run() メソッドに準拠するために書かなければならないメソッドです。 Runnable インターフェイスを使用します。メインスレッドで、新しい Thread クラスのインスタンスをコンストラクタに渡します。 Runnable を呼び出した後 start() をその上に置く。 start は、JVM に新しいスレッドを作成する魔法をかけるように指示し、次にあなたの run メソッドを実行します。

public class MyRunnable implements Runnable {

    private int var;

    public MyRunnable(int var) {
        this.var = var;
    }

    public void run() {
        // code in the other thread, can reference "var" variable
    }
}

public class MainThreadClass {
    public static void main(String args[]) {
        MyRunnable myRunnable = new MyRunnable(10);
        Thread t = new Thread(myRunnable)
        t.start();
    }    
}

を見てみましょう。 Java の並行処理チュートリアル を始めることができます。

もしあなたのメソッドが頻繁に呼び出されるのであれば、毎回新しいスレッドを作成する価値はないでしょう。おそらく、ある種のスレッドプールを使用するのが最善でしょう。以下のサイトを参照してください。 Future , Callable , Executor クラスは java.util.concurrent パッケージを使用します。