Scala 线程方法
Scala 线程方法
线程类提供了各种处理线程状态的方法。您可以使用这些方法来控制线程的流量。
下表包含了Thread类的常用方法。
方法 |
说明 |
public final String getName() |
它返回线程的名称。 |
public final int getPriority() |
返回线程的优先级。 |
public Thread.State getState() |
它返回这个线程的状态。这种方法是用来监控系统状态的,不是用来同步控制的。 |
public final boolean isAlive() |
它测试这个线程是否还活着。如果一个线程已经启动并且还没有死亡,那么它就处于活动状态。 |
public final void join() throws InterruptedException |
它等待线程死亡。 |
public void run() |
如果该线程是使用单独的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,此方法不执行任何操作并返回。 |
public final void setName(String name) |
用于设置线程名称。 |
public final void setPriority(int newPriority) |
用于设置线程的优先级。 |
public static void sleep(long millis) throws InterruptedException |
用于休眠执行线程指定的毫秒数。 |
public static void 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()
}
}
输出:
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()
}
}
输出: