我可以创建一个扩展 Thread 的类并使用循环覆盖 run 方法。 然后我使用 myThread.start() 启动它,它创建操作系统线程并执行我的 run()。 这一切都很好。
但是,我不太明白细节。当我有机会时,我会尝试使用测试代码来解决这个问题,但在此之前任何人都可以回答这些问题:
Q1。构造函数何时执行,大概是在声明 myThread 时,还是在 start() 时执行?
第二季度。当我的 run() 代码完成时会发生什么?有没有办法让它在同一个线程中再次运行(即不丢失类中定义的所有线程变量值)大概调用 start() 可能会创建一个新的操作系统线程?
第三季度。大概只是调用 myThread.run() 就会在当前 Activity 的上下文中执行我的 run(),而不是 mythread,在这种情况下它如何访问线程变量?)
-弗林克
最佳答案
A1) 当您构造 MyThread 类的实例时
A2) 线程不能运行两次或重新启动,as stated in the documentation .
A3) 是的,直接调用run()
将在当前线程中执行该函数,而不是在新线程中。如果您只想调用 run()
,那么创建一个扩展 Thread 的类没有多大意义。您应该始终调用 start()
。
关于java - Android 线程详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3759933/