Multithreading 如何理解Scala中的“new{}”语法?
我正在学习Scala多线程编程,并通过参考教程编写了一个简单的程序:Multithreading 如何理解Scala中的“new{}”语法?,multithreading,scala,Multithreading,Scala,我正在学习Scala多线程编程,并通过参考教程编写了一个简单的程序: object ThreadSleep extends App { def thread(body: =>Unit): Thread = { val t = new Thread { override def run() = body } t.start() t } val t = thread{println("New Therad")} t.join } 我
object ThreadSleep extends App {
def thread(body: =>Unit): Thread = {
val t = new Thread {
override def run() = body
}
t.start()
t
}
val t = thread{println("New Therad")}
t.join
}
我不明白为什么在新的线程{}语句中使用{}。我认为它应该是新的线程或新线程。我如何理解这个语法
这个问题没有完全重复到,因为我的问题是关于new{}的语法。这是
new Thread() { ... }
这称为匿名类,其工作原理与JAVA中的类似:
您在这里创建了一个新线程,其中包含一个重写的run方法。这很有用,因为如果只使用一次,就不必创建特殊类。
需要确认,但您可以覆盖、添加、重新定义所需的每个方法或属性
有关更多详细信息,请参见此处:这是
new Thread() { ... }
这称为匿名类,其工作原理与JAVA中的类似:
您在这里创建了一个新线程,其中包含一个重写的run方法。这很有用,因为如果只使用一次,就不必创建特殊类。
需要确认,但您可以覆盖、添加、重新定义所需的每个方法或属性
有关更多详细信息,请参见此处:通过编写新线程{}创建线程的匿名子类,在其中重写run方法。通常,您希望创建Runnable的子类,并使用它创建线程,而不是子类化线程
这在语义上通常更为正确,因为只有在更专门化线程类(例如使用AbortableThread)的情况下,您才希望对线程进行子类化。如果您只想在线程上运行任务,可运行的方法更合适。通过编写新的线程{},您可以创建一个匿名的线程子类,在其中重写run方法。通常,您希望创建Runnable的子类,并使用它创建线程,而不是子类化线程
这在语义上通常更为正确,因为只有在更专门化线程类(例如使用AbortableThread)的情况下,您才希望对线程进行子类化。如果您只想在线程上运行任务,可运行的方法更合适。可能重复的可能重复的