我可以创建一个扩展Thread的类,并用循环覆盖run方法。 然后我用myThread.start()启动它,它创建OS线程并执行我的run()。 这一切都很好。
但是,我不太了解细节。当我有机会时,我会使用测试代码来解决这个问题,但在此之前,任何人都可以回答这些问题:
Q1。构造函数何时执行,可能是在声明myThread时,或者在start()?
时执行Q2。我的run()代码完成后会发生什么?有没有办法让它在同一个线程中再次运行(即不丢失类中定义的所有线程变量值)大概调用start()可能会创建一个新的os线程?
Q3。大概只是调用myThread.run()会在当前活动的上下文中执行我的run(),而不是mythread,在这种情况下,它如何访问线程变量?)
-Frink
答案 0 :(得分:4)
A1)构造MyThread类的实例时
A2)线程无法运行两次或重新启动as stated in the documentation。
A3)是的,直接调用run()
将在当前线程中执行该函数,而不是在新线程中执行。如果你只想调用run()
,创建一个扩展Thread的类没有多大意义。您应该始终致电start()
。