亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java中如何停止一個(gè)正在運(yùn)行的線程

 更新時(shí)間:2025年01月08日 14:31:29   作者:夜夜流光相皎潔_小寧  
文章介紹了三種停止正在運(yùn)行線程的方法:設(shè)置標(biāo)志位、利用中斷標(biāo)志位和利用InterruptedException異常,這些方法可以幫助我們有效地控制線程的執(zhí)行

如何停止一個(gè)正在運(yùn)行的線程

1)設(shè)置標(biāo)志位

如果線程的run方法中執(zhí)行的是一個(gè)重復(fù)執(zhí)行的循環(huán),可以提供一個(gè)標(biāo)記來控制循環(huán)是否繼續(xù)

代碼示例:

public class FunDemo02 {

    /**
     * 練習(xí)2:設(shè)計(jì)一個(gè)線程:運(yùn)行10秒后被終止(掌握線程的終止方法)
     * @param args
     */
    public static void main(String[] args)  throws Exception{
        MyRunable02 runnable = new MyRunable02();
        new Thread(runnable).start();
        Thread.sleep(10000); // 主線程休眠10秒鐘
        runnable.flag = false;
        System.out.println("main、  end ...");
    }
}

class MyRunable02 implements Runnable{

    boolean flag = true;

    @Override
    public void run() {
        while(flag){
            try {
                Thread.sleep(1000);
                System.out.println(new Date());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println(Thread.currentThread().getName() + " 執(zhí)行完成");
    }
}

2)利用中斷標(biāo)志位

在線程中有個(gè)中斷的標(biāo)志位,默認(rèn)是false,當(dāng)我們顯示的調(diào)用 interrupted方法或者isInterrupted方法是會(huì)修改標(biāo)志位為true。

我們可以利用此來中斷運(yùn)行的線程。

代碼示例:

package com.bobo.fundemo;

public class FunDemo07 extends Thread{

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new FunDemo07();
        t1.start();
        Thread.sleep(3000);
         t1.interrupt(); // 中斷線程 將中斷標(biāo)志由false修改為了true
        // t1.stop(); // 直接就把線程給kill掉了
        System.out.println("main .... ");
    }

    @Override
    public void run() {
        System.out.println(this.getName() + " start...");
        int i = 0 ;
        // Thread.interrupted() 如果沒有被中斷 那么是false 如果顯示的執(zhí)行了interrupt 方法就會(huì)修改為 true
        while(!Thread.interrupted()){
            System.out.println(this.getName() + " " + i);
            i++;
        }

        System.out.println(this.getName()+ " end .... ");

    }
}

3)利用InterruptedException異常

如果線程因?yàn)閳?zhí)行join(),sleep()或者wait()而進(jìn)入阻塞狀態(tài),此時(shí)要想停止它,可以讓他調(diào)用interrupt(),程序會(huì)拋出InterruptedException異常。

我們利用這個(gè)異??梢詠斫K止線程。

package com.bobo;

public class FunDemo08 extends Thread{

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new FunDemo08();
        t1.start();
        Thread.sleep(3000);
         t1.interrupt(); // 中斷線程 將中斷標(biāo)志由false修改為了true
        // t1.stop(); // 直接就把線程給kill掉了
        System.out.println("main .... ");
    }

    @Override
    public void run() {
        System.out.println(this.getName() + " start...");
        int i = 0 ;
        // Thread.interrupted() 如果沒有被中斷 那么是false 如果顯示的執(zhí)行了interrupt 方法就會(huì)修改為 true
         while(!Thread.interrupted()){
        //while(!Thread.currentThread().isInterrupted()){
             try {
                 Thread.sleep(10000);
             } catch (InterruptedException e) {
                 e.printStackTrace();
				 break;
             }
             System.out.println(this.getName() + " " + i);
            i++;
        }

        System.out.println(this.getName()+ " end .... ");

    }
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java語言圖形用戶登錄界面代碼

    java語言圖形用戶登錄界面代碼

    這篇文章主要為大家詳細(xì)介紹了java語言圖形用戶登錄界面代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java 對接飛書多維表格使用詳解(微服務(wù))

    Java 對接飛書多維表格使用詳解(微服務(wù))

    本文詳細(xì)介紹了如何基于飛書開放平臺(tái)在微服務(wù)項(xiàng)目中操作飛書多維表格,包括應(yīng)用創(chuàng)建、授權(quán)、多維表數(shù)據(jù)操作(新增、查詢、刪除)以及Java SDK實(shí)現(xiàn)等步驟,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 基于@Autowierd(自動(dòng)裝配)的使用說明

    基于@Autowierd(自動(dòng)裝配)的使用說明

    這篇文章主要介紹了@Autowierd(自動(dòng)裝配)的使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Lombok 的@StandardException注解解析

    Lombok 的@StandardException注解解析

    @StandardException 是一個(gè)實(shí)驗(yàn)性的注解,添加到 Project Lombok 的 v__1.18.22 版本中,在本教程中,我們將使用 Lombok 的 @StandardException 注解自動(dòng)生成異常類型類的構(gòu)造函數(shù),需要的朋友可以參考下
    2023-05-05
  • Java使用Lua實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)展和腳本自動(dòng)升級

    Java使用Lua實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)展和腳本自動(dòng)升級

    Lua是一種輕量級的腳本語言,常用于游戲開發(fā)和嵌入式系統(tǒng)中,這篇文章主要介紹了Java如何調(diào)用Lua實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)展和腳本自動(dòng)升級,感興趣的可以學(xué)習(xí)下
    2023-08-08
  • Java?數(shù)據(jù)結(jié)構(gòu)進(jìn)階二叉樹題集下

    Java?數(shù)據(jù)結(jié)構(gòu)進(jìn)階二叉樹題集下

    二叉樹可以簡單理解為對于一個(gè)節(jié)點(diǎn)來說,最多擁有一個(gè)上級節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將帶你通過實(shí)際題目來熟練掌握
    2022-04-04
  • Java利用Redis實(shí)現(xiàn)高并發(fā)計(jì)數(shù)器的示例代碼

    Java利用Redis實(shí)現(xiàn)高并發(fā)計(jì)數(shù)器的示例代碼

    這篇文章主要介紹了Java利用Redis實(shí)現(xiàn)高并發(fā)計(jì)數(shù)器的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 基于Java實(shí)現(xiàn)遍歷文件目錄并去除中文文件名

    基于Java實(shí)現(xiàn)遍歷文件目錄并去除中文文件名

    這篇文章主要為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)遍歷文件目錄并去除中文文件名,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2024-03-03
  • Java處理科學(xué)計(jì)數(shù)法數(shù)字方式

    Java處理科學(xué)計(jì)數(shù)法數(shù)字方式

    這篇文章主要介紹了Java處理科學(xué)計(jì)數(shù)法數(shù)字方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • SpringBoot生成jar/war包的布局應(yīng)用

    SpringBoot生成jar/war包的布局應(yīng)用

    在 Spring Boot 中,"布局應(yīng)用"(Application Layout)指的是打包生成的可執(zhí)行 jar 或 war 文件中的內(nèi)容組織結(jié)構(gòu),本文給大家介紹了SpringBoot生成jar/war包的布局應(yīng)用,需要的朋友可以參考下
    2024-02-02

最新評論