Javaスレッドは終了し、一時停止します

スレッドを終了する一般的な方法: 

    私たちは、一般的に()/破棄()メソッド(自体はJDKを放棄されている)を提供し、停止JDKを使用してスレッドを終了しないでください。通常の練習は、この変数がfalseに設定されて終了、のブール変数の種類を提供することで、スレッドの実行が終了されます。

典型的な方法は、スレッドを終了します。

public class TestThreadCiycle implements Runnable {
    String name;
    boolean live = true;// 标记变量,表示线程是否可中止;
    public TestThreadCiycle(String name) {
        super();
        this.name = name;
    }
    public void run() {
        int i = 0;
        //当live的值是true时,继续线程体;false则结束循环,继而终止线程体;
        while (live) {
            System.out.println(name + (i++));
        }
    }
    public void terminate() {
        live = false;
    }
 
    public static void main(String[] args) {
        TestThreadCiycle ttc = new TestThreadCiycle("线程A:");
        Thread t1 = new Thread(ttc);// 新生状态
        t1.start();// 就绪状态
        for (int i = 0; i < 100; i++) {
            System.out.println("主线程" + i);
        }
        ttc.terminate();
        System.out.println("ttc stop!");
    }
}

      実行結果は図2に示されているので:(結果は必ずしも各ランに一致しないように)、マルチスレッド

スレッド実行スリープ/歩留まりをサスペンド:

      サスペンドスレッド実行方法は、一般的にスリープ()及び収率()メソッドを使用している、これらの2つの方法の違いは以下のとおりです。

      1.睡眠()メソッド:睡眠時間がいっぱいになるまで、あなたはブロックされた状態に実行中のスレッドを作ることができ、準備状態。

      2.収量()メソッド:あなたは右のCPUを使用するようにすることを、直接準備状態に実行中のスレッドを作ることができます。

一時停止スレッド方式の-sleep():

public class TestThreadState {
    public static void main(String[] args) {
        StateThread thread1 = new StateThread();
        thread1.start();
        StateThread thread2 = new StateThread();
        thread2.start();
    }
}
//使用继承方式实现多线程
class StateThread extends Thread {
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(this.getName() + ":" + i);
            try {
                Thread.sleep(2000);//调用线程的sleep()方法;
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

      図11-6に示す実行結果が(注:以下は部分的にしか結果を示し、それぞれの結果が出力遅延の前にランタイムを感じることができ、プレイ文でのThread.sleepは(2000)です):

一時停止スレッド法)(-yield:

public class TestThreadState {
    public static void main(String[] args) {
        StateThread thread1 = new StateThread();
        thread1.start();
        StateThread thread2 = new StateThread();
        thread2.start();
    }
}
//使用继承方式实现多线程
class StateThread extends Thread {
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println(this.getName() + ":" + i);
            Thread.yield();//调用线程的yield()方法;
        }
    }
}

業績:

注:以下は部分的にしか結果を示しているが、スレッド切り替えを引き起こす可能性がありますが、有意な遅延ランタイムはありません

 

 

公開された150元の記事 ウォンの賞賛9 ビュー20000 +

おすすめ

転載: blog.csdn.net/ZGL_cyy/article/details/104356865