最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實現(xiàn)線程的暫停和恢復(fù)的示例詳解

 更新時間:2023年11月22日 11:57:37   作者:桃花鍵神  
這幾天的項目中,客戶給了個需求,希望我可以開啟一個任務(wù),想什么時候暫停就什么時候暫停,想什么時候開始就什么時候開始,所以本文小編給大家介紹了Java實現(xiàn)線程的暫停和恢復(fù)的示例,需要的朋友可以參考下

問題思路

在Java中,線程的暫停和恢復(fù)可以通過Thread類的interrupt方法實現(xiàn)。需要注意的是,interrupt方法并不會立即停止線程,而是會設(shè)置一個中斷標(biāo)記,你需要在你的線程中適當(dāng)?shù)仨憫?yīng)這個中斷。

以下是一個簡單的示例:

問題答案

public class MyThread extends Thread {  
    private volatile boolean isInterrupted = false;  
  
    @Override  
    public void run() {  
        while (!isInterrupted) {  
            // 線程正在執(zhí)行的任務(wù)...  
        }  
    }  
  
    public void interruptThread() {  
        isInterrupted = true;  
    }  
  
    public void resetInterrupt() {  
        isInterrupted = false;  
    }  
}

在這個例子中,我們創(chuàng)建了一個繼承自Thread的類,并添加了一個isInterrupted標(biāo)志來跟蹤線程是否被中斷。在run方法中,我們檢查這個標(biāo)志,如果它被設(shè)置為true,那么我們就退出循環(huán),線程就會結(jié)束。

你可以通過調(diào)用interruptThread方法來中斷線程,并通過調(diào)用resetInterrupt方法來重置中斷狀態(tài)。需要注意的是,當(dāng)線程被中斷時,它會拋出InterruptedException,你需要在你的代碼中處理這個異常。

其他方法

自定義線程類(MyThread)

package com.example.wangjun.myapplication;

import android.util.Log;

public class MyThread extends Thread {

    private final Object lock = new Object();

    private boolean pause = false;

    /**
     * 調(diào)用該方法實現(xiàn)線程的暫停
     */
    void pauseThread(){
        pause = true;
    }


    /*
    調(diào)用該方法實現(xiàn)恢復(fù)線程的運(yùn)行
     */
    void resumeThread(){
        pause =false;
        synchronized (lock){
            lock.notify();
        }
    }

    /**
     * 這個方法只能在run 方法中實現(xiàn),不然會阻塞主線程,導(dǎo)致頁面無響應(yīng)
     */
    void onPause() {
        synchronized (lock) {
            try {
                lock.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void run() {
        super.run();
        int index = 0;
        while(true){
            while (pause){
                onPause();
            }
            try {
                System.out.println(index);
                Thread.sleep(50);
                ++index;
            }catch (Exception e){
                e.printStackTrace();
                break;
            }
        }
    }
}

上面代碼中,有注釋,其實大家應(yīng)該都看得懂,那么主要是我們使用同步鎖synchronized對Objecy類型的lock進(jìn)行同步,并在OnPause()方法中進(jìn)行wait()方法,線程等待,又在resumeThread()方法中進(jìn)行了解鎖notify(),所以我們就能進(jìn)行線程的暫停和繼續(xù)的操作了

方法的調(diào)用

  MyThread my = new MyThread();
        Thread thread = new Thread(my);
        thread.start();

        try {
            sleep(1000);
            my.pauseThread();
            sleep(5000);
            my.resumeThread();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

出現(xiàn)的結(jié)果,會在前一秒內(nèi)瘋狂自增,之后在聽五秒后,又開始繼續(xù)自增;

最后

以上就是Java實現(xiàn)線程的暫停和恢復(fù)的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Java線程暫停和恢復(fù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • idea2019版與maven3.6.2版本不兼容的解決方法

    idea2019版與maven3.6.2版本不兼容的解決方法

    這篇文章主要介紹了idea2019版與maven3.6.2版本不兼容的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • MAC環(huán)境下安裝多個JDK的實現(xiàn)步驟

    MAC環(huán)境下安裝多個JDK的實現(xiàn)步驟

    為了能夠在Mac上管理多個JDK版本,首先需要安裝這些不同的JDK版本,這篇文章主要介紹了MAC環(huán)境下安裝多個JDK的實現(xiàn)步驟,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • 為什么SpringMVC中請求的body不支持多次讀取

    為什么SpringMVC中請求的body不支持多次讀取

    這篇文章主要介紹了為什么SpringMVC中請求的body不支持多次讀取,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • SpringBoot配置Spring?Security的實現(xiàn)示例

    SpringBoot配置Spring?Security的實現(xiàn)示例

    本文主要介紹了SpringBoot配置Spring?Security的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Java項目中防止SQL注入的四種方案總結(jié)

    Java項目中防止SQL注入的四種方案總結(jié)

    SQL注入是一種代碼注入技術(shù),通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,下面我們就來看看如何在項目中防止SQL注入吧
    2023-10-10
  • 老生常談 java匿名內(nèi)部類

    老生常談 java匿名內(nèi)部類

    下面小編就為大家?guī)硪黄仙U刯ava匿名內(nèi)部類。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • Java為什么匿名內(nèi)部類參數(shù)引用需要用final進(jìn)行修飾?

    Java為什么匿名內(nèi)部類參數(shù)引用需要用final進(jìn)行修飾?

    今天小編就為大家分享一篇關(guān)于Java為什么匿名內(nèi)部類參數(shù)引用需要用final進(jìn)行修飾?,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Java獲取磁盤空間的兩種代碼示例

    Java獲取磁盤空間的兩種代碼示例

    這篇文章主要介紹了Java獲取磁盤空間的兩種代碼示例,沒什么事的時候可以拿來玩玩,需要的朋友參考下。
    2017-11-11
  • Java調(diào)用SQL腳本執(zhí)行常用的方法示例

    Java調(diào)用SQL腳本執(zhí)行常用的方法示例

    這篇文章主要給大家介紹了關(guān)于Java調(diào)用SQL腳本執(zhí)行常用的方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Spring中@Primary注解的作用與使用

    Spring中@Primary注解的作用與使用

    本文主要介紹了Spring中@Primary注解的作用與使用,@Primary?注解用于解決依賴注入時的歧義性問題,具有一定的參考價值,感興趣的可以了解一下
    2025-06-06

最新評論

聂拉木县| 岳阳县| 新和县| 二连浩特市| 南皮县| 秦皇岛市| 五大连池市| 文成县| 平南县| 淅川县| 祥云县| 安阳市| 石河子市| 大庆市| 商河县| 公主岭市| 外汇| 湘西| 麦盖提县| 安新县| 黎川县| 定陶县| 莲花县| 鹤壁市| 盐亭县| 佛山市| 通辽市| 元江| 鸡东县| 青阳县| 修文县| 寿阳县| 东明县| 乌什县| 长沙市| 且末县| 顺义区| 军事| 平江县| 六盘水市| 金溪县|