我想知道如何在Java中跨线程调用不同的函数。目前,我所做的方法是将我的线程的run()函数编写为以下方式:
public volatile boolean invokeMyFunction = false;
public void run() {
while(true) {
if(invokeMyFunction) {
MyFunction();
invokeMyFunction = false;
}
}
}
如果我想从线程外运行函数MyFunction(),则写"whateverobject.invokeMyFunction = true",它将从该线程内运行我的函数,因为该循环将捕获它。这对我来说非常有效,但由于while(true)循环,它会使用100%的CPU。我可以通过在循环内加入Thread.sleep(1000)来解决这个问题,但这似乎有些混乱,而且我认为有更好的方法来解决这个问题。