在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Scala/ Scala線(xiàn)程方法
Scala方法重載
Scala模式匹配
Scala throw關(guān)鍵字
Scala提取器
Scala概述
Scala throws關(guān)鍵字
Scala finally塊
Scala正則表達(dá)式
Scala循環(huán)語(yǔ)句
Scala多線(xiàn)程
Scala函數(shù)
Scala final關(guān)鍵字
Scala方法覆蓋
Scala字符串
Scala線(xiàn)程實(shí)現(xiàn)
Scala異常處理
Scala類(lèi)和對(duì)象
Scala數(shù)據(jù)類(lèi)型
Scala單例和伴生對(duì)象
Scala構(gòu)造函數(shù)
Scala教程
Scala Case類(lèi)和對(duì)象
Scala繼承
Scala開(kāi)發(fā)環(huán)境安裝配置
Scala運(yùn)算符
Scala文件I/O
Scala線(xiàn)程方法
Scala變量
Scala try-catch語(yǔ)句
Scala基礎(chǔ)語(yǔ)法
Scala集合
Scala數(shù)組
Scala閉包
Scala訪(fǎng)問(wèn)修辭符
Scala this關(guān)鍵字

Scala線(xiàn)程方法

線(xiàn)程(Thread)類(lèi)提供了各種方法來(lái)處理線(xiàn)程的狀態(tài)??梢允褂眠@些方法來(lái)控制線(xiàn)程的執(zhí)行。

下表包含Thread類(lèi)常用的方法 -

方法 描述
public final String getName() 它返回線(xiàn)程的名稱(chēng)。
public final int getPriority() 它返回線(xiàn)程的優(yōu)先級(jí)。
public Thread.State getState() 它返回此線(xiàn)程的狀態(tài)。該方法設(shè)計(jì)用于監(jiān)視系統(tǒng)狀態(tài),不用于同步控制。
public final boolean isAlive() 它測(cè)試這個(gè)線(xiàn)程是否存活著。如果線(xiàn)程已經(jīng)啟動(dòng)并且尚未死亡,則該線(xiàn)程仍然存在。
public final void join() throws InterruptedException 它等待線(xiàn)程死亡。
public void run() 如果使用單獨(dú)的Runnable運(yùn)行對(duì)象構(gòu)建此線(xiàn)程,則調(diào)用Runnable對(duì)象的run()方法; 否則,此方法不執(zhí)行任何操作并返回。
public final void setName(String name) 它用于設(shè)置線(xiàn)程名稱(chēng)。
public final void setPriority(int newPriority) 它用于設(shè)置線(xiàn)程的優(yōu)先級(jí)。
public static void sleep(long millis) throws InterruptedException 它用于執(zhí)行指定的毫秒數(shù)休眠線(xiàn)程。
public static void yield() 它導(dǎo)致當(dāng)前執(zhí)行的線(xiàn)程對(duì)象臨時(shí)暫停并允許其他線(xiàn)程執(zhí)行。

Scala Thread sleep()方法

sleep()方法用于在指定時(shí)間內(nèi)休眠線(xiàn)程,以毫秒為單位作為時(shí)間參數(shù)。

class ThreadExample extends Thread{  
    override def run(){  
    for(i<- 0 to 5){  
            println(i)  
            Thread.sleep(500)  
        }  
    }  

}  

object Demo{  
    def main(args:Array[String]){  
    var t1 = new ThreadExample()  
    var t2 = new ThreadExample()  
        t1.start()  
        t2.start()  
    }  
}

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
0
0
1
1
2
2
3
3
4
4
5
5

Scala Thread join()示例

join()方法等待線(xiàn)程死機(jī),換句話(huà)說(shuō),join()方法用于保持當(dāng)前正在運(yùn)行的線(xiàn)程的執(zhí)行,直到指定的線(xiàn)程完成它的執(zhí)行。

class ThreadExample extends Thread{  
    override def run(){  
        for(i<- 0 to 5){  
            println(i)  
            Thread.sleep(500)  
        }  
    }  

}  
object MainObject{  
    def main(args:Array[String]){  
        var t1 = new ThreadExample()  
        var t2 = new ThreadExample()  
        var t3 = new ThreadExample()  
        t1.start()  
        t1.join()  
        t2.start()  
        t3.start()  
    }  
}

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
0
1
2
3
4
5
0
0
1
1
2
2
3
3
4
4
5
5

Scala setName()方法示例

在以下示例中,正在設(shè)置和獲取線(xiàn)程名稱(chēng)。

class ThreadExample() extends Thread{  
    override def run(){  
        for(i<- 0 to 5){  
            println(this.getName()+" - "+i)  
            Thread.sleep(500)  
        }  
    }  
}  

object MainObject{  
    def main(args:Array[String]){  
        var t1 = new ThreadExample()  
        var t2 = new ThreadExample()  
        var t3 = new ThreadExample()  
        t1.setName("First Thread")  
        t2.setName("Second Thread")  
        t1.start()  
        t2.start()  
    }  
}

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
First Thread - 0
Second Thread - 0
Second Thread - 1
First Thread - 1
Second Thread - 2
First Thread - 2
Second Thread - 3
First Thread - 3
Second Thread - 4
First Thread - 4
Second Thread - 5
First Thread - 5

Scala線(xiàn)程優(yōu)先級(jí)示例

可以使用其預(yù)定義的方法設(shè)置線(xiàn)程優(yōu)先級(jí),以下示例設(shè)置線(xiàn)程的優(yōu)先級(jí)。

class ThreadExample() extends Thread{  
    override def run(){  
        for(i<- 0 to 5){  
            println(this.getName())  
            println(this.getPriority())  
            Thread.sleep(500)  
        }  
    }  
}  
object Demo{  
    def main(args:Array[String]){  
        var t1 = new ThreadExample()  
        var t2 = new ThreadExample()  
        t1.setName("First Thread")  
        t2.setName("Second Thread")  
        t1.setPriority(Thread.MIN_PRIORITY)  
        t2.setPriority(Thread.MAX_PRIORITY)  
        t1.start()  
        t2.start()  
    }  
}

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
First Thread
Second Thread
10
1
Second Thread
10
First Thread
1
Second Thread
10
First Thread
1
Second Thread
10
First Thread
1
Second Thread
10
First Thread
1
Second Thread
10
First Thread
1

Scala線(xiàn)程多任務(wù)示例

以下示例通過(guò)使用多個(gè)線(xiàn)程來(lái)運(yùn)行多個(gè)任務(wù),這個(gè)例子說(shuō)明了如何在Scala中實(shí)現(xiàn)多任務(wù)。

class ThreadExample() extends Thread{  
    override def run(){  
        for(i<- 0 to 5){  
        println(i)              
        Thread.sleep(500)  
    }  
}  
def task(){  
    for(i<- 0 to 5){  
            println(i)  
            Thread.sleep(200)  
        }  
    }  
}  

object Demo{  
    def main(args:Array[String]){  
        var t1 = new ThreadExample()  
        t1.start()  
        t1.task()           
    }  
}

將上面代碼保存到源文件:Demo.scala中,使用以下命令編譯并執(zhí)行代碼 -

D:\software\scala-2.12.3\bin>scalac Demo.scala
D:\software\scala-2.12.3\bin>scala Demo.scal
First Thread
0
0
1
2
1
3
4
2
5
3
4
5