次のコードは、メソッド内の匿名内部クラスを通じてスレッドを定義し、その run() メソッドをオーバーライドして、スレッドを直接開始する方法を示しています。
このようなコードは、クラス内で新しいスレッドを開始することによってサイドタスクを実行するために使用できます。通常、そのようなタスクはクラスの主要な設計コンテンツではありません。
package com.zj.concurrency; public class StartFromMethod { private Thread t; private int number; private int count = 1; public StartFromMethod(int number) { this.number = number; } public void runTask() { if (t == null) { t = new Thread() { public void run() { while (true) { System.out.println("Thread-" + number + " run " + count + " time(s)"); if (++count == 3) return; } } }; t.start(); } } public static void main(String[] args) { for (int i = 0; i < 5; i++) new StartFromMethod(i).runTask(); } }
結果:
スレッド 0 実行 1 回
スレッド 0 実行 2 回
スレッド 1 実行 1 回
スレッド 1 実行 2 回
スレッド 2 実行 1 回
スレッド 2 実行 2 回
スレッド 3 実行 1 回
スレッド 3 実行 2 回
スレッド 4 実行 1 time(s)
Thread-4 run 2 time(s)
その他の Java: 匿名内部クラスを使用してメソッド内でスレッドを定義および開始する 関連記事については、PHP 中国語 Web サイトに注目してください。