斯卡拉 |多线程
多个线程同时执行的过程,称为多线程。它允许您独立执行多项任务。
Scala 中的线程是什么?
线程是占用较少内存的轻量级子进程。多线程程序包含两个或多个可以并发运行的线程,每个线程可以同时处理不同的任务,从而优化利用可用资源,特别是当您的系统(计算机)具有多个 CPU 时。多线程用于在 Scala 中开发并发应用程序。
Scala 中的线程可以使用两种机制创建:
- 扩展线程类
- 扩展可运行接口
- 通过扩展 Thread 类创建线程
我们创建一个扩展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 接口并覆盖 run() 方法的新类。然后我们实例化一个 Thread 对象,将创建的类传递给构造函数。然后我们在这个对象上调用 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 :在这种状态下,线程正在执行它的任务。
- 阻塞(或等待):这是线程仍然处于活动状态但由于等待输入或资源而当前无法运行的状态。
- Terminated :当它的 run() 方法退出时,线程处于死亡状态。