Scala でのスレッドスリープメソッド
Suraj P
2023年1月30日
まず、この記事では、Scala でスレッドがどのように実装されているかを学びます。次に、Scala で Sleep メソッドがどのように機能するかを見ていきます。
Scala のスレッド
スレッドは軽量のサブプロセスであり、必要なスペースが少なく、実行速度が速くなります。マルチスレッド環境では、多くのスレッドが同時に実行され、それぞれが異なるタスクを実行します。これにより、CPU 使用率とリソースが向上し、スループットが向上します。
Scala では、スレッドは 2つの方法で作成されます。1つは Runnable
インターフェイスの拡張であり、もう 1つは Thread
クラスの拡張です。
方法 1:Runnable インターフェイスの拡張
Runnable インターフェイスを拡張し、run()メソッドをオーバーライドするクラスを作成します。
コード例:
class test extends Runnable
{
override def run()
{
println("Thread "+Thread.currentThread().getName()+" is running.")
}
}
object MyClass {
def main(args: Array[String]) {
for(i<- 1 to 5)
{
var obj = new Thread(new test()) //creating the object
obj.setName(i.toString())
obj.start() //starts the thread
}
}
}
出力:
Thread 1 is running.
Thread 2 is running.
Thread 3 is running.
Thread 4 is running.
Thread 5 is running.
方法 2:Thread クラスを拡張する
Thread クラスを拡張し、run()メソッドをオーバーライドするクラスを作成します。
コード例:
class test extends Thread
{
override def run()
{
println("Thread "+Thread.currentThread().getName()+" is running.")
}
}
object MyClass {
def main(args: Array[String]) {
for(i<- 1 to 5)
{
var obj = new Thread(new test()) //creating the object
obj.setName(i.toString())
obj.start() //starts the thread
}
}
}
出力:
Thread 1 is running.
Thread 2 is running.
Thread 3 is running.
Thread 4 is running.
Thread 5 is running.
Scala の Thread.sleep()
Thread.sleep(time)
は、スレッドを特定の時間スリープさせるために使用されます。ミリ秒単位の時間は、引数として渡されます。
構文:
Thread.sleep(1000)
Here the thread would sleep for 1000 milliseconds
サンプルコード:
class test extends Thread
{
override def run()
{
var i = 0
println("Thread "+Thread.currentThread().getName()+" is running.")
for(i<-1 to 5)
{
Thread.sleep(1000) //will sleep the thread
}
}
}
object MyClass {
def main(args: Array[String]) {
for(i<- 1 to 5)
{
var obj = new Thread(new test()) //creating the object
var thread1 = new Thread(obj);
var thread2 = new Thread(obj);
thread1.setName("1")
thread2.setName("2")
thread1.start() //starts the thread
thread2.start()
}
}
}
出力:
Thread 1 is running.
Thread 2 is running.
Thread 1 is running.
Thread 2 is running.
Thread 1 is running.
Thread 2 is running.
Thread 1 is running.
Thread 2 is running.
Thread 1 is running.
Thread 2 is running.