Scala线程方法使用例子和解释

本文概述

线程类提供了各种方法来处理线程的状态。你可以使用这些方法来控制线程流。

下表包含Thread类的常用方法。

Method Description
公共最终字符串getName() 它返回线程的名称。
public final int getPriority() 它返回线程的优先级。
公共Thread.State getState() 它返回该线程的状态。此方法设计用于监视系统状态, 而不用于同步控制。
公共最终布尔值isAlive() 它测试此线程是否仍然存在。如果线程已经启动但尚未死亡, 则该线程是活动的。
公共最终void join()抛出InterruptedException 等待线程死亡。
公共无效run() 如果此线程是使用单独的Runnable运行对象构造的, 则将调用该Runnable对象的run方法;否则, 将调用该方法。否则, 此方法不执行任何操作并返回。
公共最终无效setName(String name) 用于设置线程名称。
public final void setPriority(int newPriority) 它用于设置线程的优先级。
公共静态无效睡眠(长毫秒)引发InterruptedException 它用于使执行线程休眠指定的毫秒数。
公共静态空yield() 它使当前正在执行的线程对象暂时暂停并允许其他线程执行。

Scala线程sleep()方法

sleep()方法用于使线程休眠指定的时间。作为参数需要花费毫秒的时间。

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()
t1.start()
t2.start()
}
}

输出

0
0
1
1
2
2
3
3
4
4
5
5

Scala线程join()方法示例

join()方法等待线程死亡。换句话说, join()方法用于保持当前正在运行的线程的执行, 直到指定线程完成执行为止。

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()
}
}

输出

0
1
2
3
4
5
0
0
1
1
2
2
3
3
4
4
5
5

Scala setName()方法示例

在下面的示例中, 我们正在设置并获取线程名称。

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()
}
}

输出

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线程优先级示例

你可以使用线程的预定义方法设置线程优先级。下面的示例设置线程的优先级。

class ThreadExample() extends Thread{
override def run(){
for(i<- 0 to 5){
println(this.getName())
println(this.getPriority())
Thread.sleep(500)
}
}
}
object MainObject{
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()
}
}

输出

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线程多任务示例

以下示例通过使用多个线程来运行多个任务。此示例说明了如何在Scala中实现多任务。

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 MainObject{
def main(args:Array[String]){
var t1 = new ThreadExample()
t1.start()
t1.task()         
}
}

输出

0
0
1
2
1
3
4
2
5
3
4
5
微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?