本文概述
线程类提供了各种方法来处理线程的状态。你可以使用这些方法来控制线程流。
下表包含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