<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            java語言

            JAVA中終止線程的方法有哪些

            時間:2025-04-07 12:24:39 java語言 我要投稿
            • 相關推薦

            JAVA中終止線程的方法有哪些

              Java的多線程編程中,java.lang.Thread類型包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。下面是小編為大家帶來的JAVA中終止線程的方法,歡迎閱讀。

              JAVA中終止線程的方法

              Java的多線程編程中,java.lang.Thread類型包含了一些列的方法start(), stop(), stop(Throwable) and suspend(), destroy() and resume()。通過這些方法,我們可以對線程進行方便的操作,但是這些方法中,只有start()方法得到了保留。

              在Sun公司的一篇文章《Why are Thread.stop, Thread.suspend and Thread.resume Deprecated? 》中詳細講解了舍棄這些方法的原因。

              如果真的需要終止一個線程,可以使用以下幾種方法:

              1、讓線程的run()方法執行完,線程自然結束。(這種方法最好)

              2、通過輪詢和共享標志位的方法來結束線程,例如while(flag){},flag的初始值設為真,當需要結束時,將flag的值設為false。(這種方法也不很好,因為如果while(flag){}方法阻塞了,則flag會失效)

              public class SomeThread implements Runnable {

              private volatile boolean stop = false;

              public void terminate() {

              stop = ture;

              }

              public void run() {

              while(stop) {

              // ... some statements

              }

              }

              }

              如果線程因為執行sleep()或是wait()而進入Not Runnable狀態,假如是wait() 用標志位就方法就不行了,

              public final void wait(long timeout)

              throws InterruptedException

              此方法導致當前線程(稱之為 T)將其自身放置在對象的等待集中,然后放棄此對象上的`所有同步要求。即當前線程變為等待狀態

              wait() 的標準使用方法

              synchronized(obj){

              while(<不滿足條件>){

              obj.wait();

              }

              滿足條件的處理過程

              }

              而您想要停止它,您可以使用第三種即

              3 使用interrupt(),而程式會丟出InterruptedException例外,因而使得執行緒離開run()方法,

              例如:

              public class SomeThread {

              public static void main(String[] args)

              {

              Thread thread=new Thread(new Runnable(){

              public void run() {

              while (!Thread.interrupted()) {

              // 處理所要處理的工作

              try {

              System.out.println("go to sleep");

              Thread.sleep(1000);

              } catch (InterruptedException e) {

              e.printStackTrace();

              System.out.println("i am interrupted!");

              }

              });

              thread.start();

              thread.interrupt();

              }

              }

              執行結果為:

              go to sleep

              i am interrupted!


            【JAVA中終止線程的方法有哪些】相關文章:

            JAVA中終止線程的方法08-12

            利用Java終止線程的方法04-05

            Java線程同步的方法05-27

            關于java實現線程同步的方式有哪些06-01

            Java實現多線程的方法04-15

            Java多線程通信方法05-18

            java中如何停止線程08-14

            java單線程多線程的實現與方法04-26

            Java線程編程中的主線程詳細介紹01-31

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看