如何在主线程上调用并运行一个方法,从其工作线程调用?
主线程代码,(Foo()函数可从主线程访问):
"skill_level"
工作线程代码(newThread):
Thread newThread = new Thread(myThread, myThread.getThreadName());
newThread.start();
谢谢!
答案 0 :(得分:-1)
“在另一个线程中调用方法”这个词在Java中没有任何意义。
您需要了解Thread
和线程是两回事:线程是通过某些代码执行的路径。 Thread
是一个Java对象,可用于启动新线程并管理其生命周期。
当一些其他线程调用t.start()
t
引用Thread
对象时,新线程开始。线程开始执行t.run()
方法,它进入和退出函数调用,直到它到达t.run()
的末尾,此时它就会死掉。与此同时,其他线程正在通过代码遵循自己的路径。
在最低级别,一个线程与另一个线程交互的 only 方式是更新共享对象和类的字段。
线程A可以通过发送消息(即通过更新某个对象中的字段)来告诉线程B执行某个函数或其他函数,但是线程A永远不能 make 线程B做某事。线程B只能执行它正在执行的代码所要做的事情。如果代码说明,请查看字段f
,如果其值大于零,则调用函数foobar()
,那么这就是线程B将执行的操作。或者,如果代码告诉它从队列中弹出Runnable
并调用Runnable的run()
方法,那么这就是该线程将要做的事情。
但是一旦线程开始运行,任何其他线程都没有线程可以更改代码。它只能更改影响代码下一步操作的字段。