国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java多線程(3)Thread的靜態(tài)方法

Yu_Huang / 1081人閱讀

摘要:方法返回當前線程的構(gòu)造方法執(zhí)行結(jié)果構(gòu)造方法在初始化的過程中都是在主線程執(zhí)行,后開啟新線程執(zhí)行。方法是事當前線程睡眠暫停毫秒。在睡眠過程中,線程會讓出,但不會失去已鎖定的資源。

上文介紹了Tread的實例方法,本文再介紹下Thread的靜態(tài)方法。

currentThread()

currentThread方法返回當前線程的Object

public    class Thread1 extends Thread{
    static{
        System.out.println(Thread.currentThread().getName()+" --> static");
    }
    
    public Thread1() {
        System.out.println(Thread.currentThread().getName()+" --> 構(gòu)造方法");
    }
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+" --> run");
    }
}
public static void main(String[] args) {
    Thread1 t1 = new Thread1();
    t1.start();
}

執(zhí)行結(jié)果:

main --> static
main --> 構(gòu)造方法
Thread-0 --> run

Thread1在初始化的過程中都是在主線程執(zhí)行,start后開啟新線程執(zhí)行。

sleep()

sleep方法是事當前線程睡眠(暫停)n毫秒。在睡眠過程中,線程會讓出cpu,但不會失去已鎖定的資源。

        Thread t = new Thread(new Runnable() {
            @Override
        public void run() {
                try {
                    Long t1 = System.currentTimeMillis();
                    System.out.println("start at:"+t1);
                    Thread.sleep(2000);
                    Long t2 = System.currentTimeMillis();
                    System.out.println("end at:"+t2);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();

執(zhí)行結(jié)果:

start at:1511096714406
end at:1511096716407

考慮到系統(tǒng)時間分配等因素,執(zhí)行結(jié)果都會大于等于指定的毫秒數(shù),但不會差太多。另外sleep方法會拋出InterruptedException 的異常,在上文中也有講到。

yield()

yield方法是讓出cpu的使用,讓出多少時間是不確定的。

public class YieldTest extends Thread{

    public YieldTest(String name) {  
        super(name);  
    }  
  
    @Override  
    public void run() {  
        for (int i = 1; i <= 50; i++) {  
            System.out.println("" + this.getName() + "-----" + i);  
            if (i == 30) {  
                this.yield();  
            }  
        }  
    }  
  
    public static void main(String[] args) {  
        YieldTest yt1 = new YieldTest("張三");  
        YieldTest yt2 = new YieldTest("李四");  
        yt1.start();  
        yt2.start();  
    }  
}

部分的執(zhí)行結(jié)果:

......
張三-----28
張三-----29
張三-----30
李四-----17
李四-----18
李四-----19
李四-----20
.....

當然每次執(zhí)行的結(jié)果可能都不一樣,這里可以看在執(zhí)行到i==30時,"張三"讓出了cpu使用,"李四"則開始執(zhí)行。

interrupted()

返回當前線程是否被中斷,實現(xiàn)就是

 return currentThread().isInterrupted(true);
holdsLock(Object obj)

holdsLock是判斷某個資源是否被線程鎖定,

public    class Thread1 extends Thread{
    
    private Object obj = new Object();
    @Override
    public void run() {
        synchronized (obj) {
            System.out.println("holdsLock1="+Thread.holdsLock(obj));
        }
        System.out.println("holdsLock2="+Thread.holdsLock(obj));
    }
    
}
    public static void main(String[] args) {
        Thread1 t1 = new Thread1();
        t1.start();

執(zhí)行結(jié)果:

holdsLock1=true
holdsLock2=false

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70667.html

相關(guān)文章

  • Java 線程編程基礎(chǔ)——Thread

    摘要:程序執(zhí)行時,至少會有一個線程在運行,這個運行的線程被稱為主線程。程序的終止是指除守護線程以外的線程全部終止。多線程程序由多個線程組成的程序稱為多線程程序。線程休眠期間可以被中斷,中斷將會拋出異常。 線程 我們在閱讀程序時,表面看來是在跟蹤程序的處理流程,實際上跟蹤的是線程的執(zhí)行。 單線程程序 在單線程程序中,在某個時間點執(zhí)行的處理只有一個。 Java 程序執(zhí)行時,至少會有一個線程在運行...

    zhoutk 評論0 收藏0
  • Java synchronized 線程同步問題詳解

    摘要:同步代碼塊二類,鎖是小括號中的類對象對象。因為對于同一個實例對象,各線程之間訪問其中的同步方法是互斥的。優(yōu)化同步代碼塊的方式有,減少同步區(qū)域或減小鎖的范圍。 版權(quán)聲明:本文由吳仙杰創(chuàng)作整理,轉(zhuǎn)載請注明出處:https://segmentfault.com/a/1190000009225706 1. 引言 在 Java 多線程編程中,我們常需要考慮線程安全問題,其中關(guān)鍵字 synchro...

    Eidesen 評論0 收藏0
  • java線程:synchronized

    摘要:非靜態(tài)方法以及方法內(nèi)部的代碼塊持有的是同一個對象鎖,它們是同步執(zhí)行的。可重入鎖使用時,當一個線程請求一個對象鎖時,再次請求該鎖是可以立即得到的。出現(xiàn)異常,會自動釋放鎖同步方法與同步代碼塊作用于整個方法,可能引起方法執(zhí)行效率下降。 synchronize可以在多個線程操作同一個成員變量或者方法時,實現(xiàn)同步(或者互斥)的效果。synchronized可以作用于方法,以及方法內(nèi)部的代碼塊。 ...

    entner 評論0 收藏0
  • Java011-線程

    摘要:多線程進程正在進行中的程序。所以容易出現(xiàn)線程安全問題。等待喚醒機制涉及的方法將同步中的線程處于凍結(jié)狀態(tài)。返回該線程的字符串表示形式,包括線程名稱優(yōu)先級和線程組。暫停當前正在執(zhí)行的線程對象,并執(zhí)行其他線程。 多線程:進程:正在進行中的程序。其實進程就是一個應(yīng)用程序運行時的內(nèi)存分配空間。線程:其實就是進程中一個程序執(zhí)行控制單元,一條執(zhí)行路徑。進程負責的是應(yīng)用程序的空間的標示。線程負責的是應(yīng)...

    gekylin 評論0 收藏0
  • java線程詳細總結(jié)

    摘要:當多個線程訪問實例時,每個線程維護提供的獨立的變量副本。而則從另一個角度來解決多線程的并發(fā)訪問。在執(zhí)行同步代碼塊的過程中,遇到異常而導(dǎo)致線程終止。在執(zhí)行同步代碼塊的過程中,其他線程執(zhí)行了當前對象的方法,當前線程被暫停,但不會釋放鎖。 一、Thread.start()與Thread.run()的區(qū)別通過調(diào)用Thread類的start()方法來啟動一個線程,這時此線程是處于就緒狀態(tài),并沒有...

    dance 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<