java - Android 线程详细信息

标签 java android multithreading

我可以创建一个扩展 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/

相关文章:

java - 如何使用多线程维护异步操作的任务顺序

java - 使用 ScheduledExecutorService,如何启动一个线程而不等待其他线程以固定时间间隔完成?

linux - clock_nanosleep 不返回 -1/set errno EINTR - LINUX

Java Eclipse 剖析 Java 异常

Java:空值解析 XML 文件

java - Reflection API 中 new Class[0] 的含义

java - Play Controller 的 @After 和 @Finally 注释有什么区别

android - 在android中的对话框中设置多个文本框

android - Flash Builder 4.5.1 - 使用 FB 4.5 开发 Android 应用程序 - 无法使用 SDK 连接到 android 设备

java - Java 中 JSON 字符串到 JSON