Scala 多线程
一个由多个线程同时执行的过程被称为 多线程 它允许你独立执行多个任务。
什么是Scala中的线程
线程是轻量级的子进程,占用的内存较少。一个多线程程序包含两个或多个可以并发运行的线程,每个线程可以同时处理不同的任务,特别是当你的系统(计算机)有多个CPU时,可以优化利用可用资源。多线程被用来开发Scala中的并发应用程序。
Scala中的线程可以通过两种机制创建。
- 扩展线程类
- 扩展Runnable接口
- 通过扩展Thread类来创建线程。
我们创建一个扩展了线程类的类。这个类重写了Thread类中的run()方法。一个线程在run()方法中开始它的生命。我们创建一个新类的对象并调用start()方法来启动线程的执行。Start()方法调用了Thread对象的run()方法。
// Scala code for thread creation by extending
// the Thread class
class MyThread extends Thread
{
override def run()
{
// Displaying the thread that is running
println("Thread " + Thread.currentThread().getName() +
" is running.")
}
}
// Creating object
object GFG
{
// Main method
def main(args: Array[String])
{
for (x <- 1 to 5)
{
var th = new MyThread()
th.setName(x.toString())
th.start()
}
}
}
输出 :
Thread 1 is running.
Thread 2 is running.
Thread 3 is running.
Thread 4 is running.
Thread 5 is running.
- 通过扩展Runnable接口创建线程。
我们创建一个新的类,它扩展了Runnable接口并覆盖了run()方法。然后我们实例化一个线程对象,将创建的类传递给构造函数。然后我们在这个对象上调用start()方法。
// Scala code for thread creation by implementing
// the Runnable Interface
class MyThread extends Runnable
{
override def run()
{
// Displaying the thread that is running
println("Thread " + Thread.currentThread().getName() +
" is running.")
}
}
// Creating object
object MainObject
{
// Main method
def main(args: Array[String])
{
for (x <- 1 to 5)
{
var th = new Thread(new MyThread())
th.setName(x.toString())
th.start()
}
}
}
输出 :
Thread 1 is running.
Thread 3 is running.
Thread 4 is running.
Thread 2 is running.
Thread 5 is running.
注意: 线程不需要按任何顺序运行。所有的线程都是并发运行的,相互独立。
Scala线程的生命周期
在Scala线程的创建和终止期间,线程经历了各种状态变化。这些构成了Scala线程的生命周期。它有以下五种状态。
- New: 这是线程刚创建时的第一个状态。
- 可运行(Runnable): 这是线程被创建后的状态,但线程还没有机会开始运行。
- Running : 在这种状态下,线程正在执行它的任务。
- Blocked(或Waiting): 这是线程仍然活着的状态,但由于等待输入或资源,目前无法运行。
- Terminated : 当一个线程的run()方法退出时,它就处于死亡状态。

极客教程