我有一类扩展了“ Thread”类。该子类已经实现了run()方法。但是可以在同一个子类中创建另一个用户定义的方法(例如saveData(Object obj)),而不是调用start()方法,而是调用saveData()创建一个新线程并执行方法saveData中的指令()。
如果创建子类的对象并对该对象调用saveData()会发生什么??
答案 0 :(得分:2)
java.lang.Thread
类与任何其他Java类没有本质区别。它具有方法,当您调用它们时,它们会执行它们的工作。
java.lang.Thread
不是线程,与java.awt.Window
实例不是 window 的方式完全相同。线程和窗口属于操作系统,相应的Java对象是用于与操作系统接口的“句柄”。创建新操作系统线程的Thread
方法称为t.start()
。
假设您定义了一个扩展Thread
class MyThread extends Thread {
...
public void saveData(...) { ... }
...
}
如果我创建子类的对象并对该对象调用saveData()会发生什么??
您在问我们吗?但是您是编写方法的人!程序调用{{1}}时,就像调用您在定义的任何其他类中编写的任何其他方法一样。您是编写该方法的人。它会做任何您放在这些花括号内的操作。
关于my_thread.saveData(...)
类的唯一一点魔力是Thread
方法。如果您这样写:
start()
然后,当您的程序调用{{1}}时,start方法将“神奇地”创建一个新线程,而新线程将调用class MyClass extends Thread {
...
public void saveData(...) { ... }
public void run() { ... }
...
}
方法...
...您也写过了,它可以做您放在其大括号中的任何事情。
如果您希望在新线程中调用new MyThread().start()
,请确保从run()
方法内的某个位置调用它。