Java-使用成员函数启动线程

时间:2018-10-19 19:11:10

标签: java multithreading

我有一类扩展了“ Thread”类。该子类已经实现了run()方法。但是可以在同一个子类中创建另一个用户定义的方法(例如saveData(Object obj)),而不是调用start()方法,而是调用saveData()创建一个新线程并执行方法saveData中的指令()。

如果创建子类的对象并对该对象调用saveData()会发生什么??

1 个答案:

答案 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()方法内的某个位置调用它。