我有一个正在运行的线程,并且它连接到Web服务器,代码位于不同的线程上,因为我不希望每次调用代码时程序都会停止。
在线程中,我需要调用一个方法,但我需要从主线程调用它,不确定是否有任何方法可以执行此操作。
如果我不是很清楚(我很确定我不是xD),那么这里有一些伪代码:
thread.start(){
<do webcall stuff>
<call method from main thread>
}
答案 0 :(得分:0)
使用诸如布尔值之类的概念,然后让你的主线程&#34;注意改变&#34;:
&#34;这样做的好方法是让一个布尔变量保护Thread的run(),并在你想要停止它时从外部将它设置为true,例如:&#34; - 杰克
答案 1 :(得分:0)
可能的代码如下:
确保你
public class Program {
volatile static ConcurrentLinkedQueue<MyData> _items = new ConcurrentLinkedQueue<MyData>();
public static void main(String[] args) throws InterruptedException {
Thread thr = new Thread(()->{
System.out.println("Web service called");
_items.add(new MyData()); });
boolean exit = false;
while(!exit) {
while (!_items.isEmpty()) {
MyData item = _items.poll();
//do something with your data
}
Thread.sleep(200);
}
}
答案 2 :(得分:-1)
如果你说要调用一个方法,那么这个新线程会从中产生。然后将该实例传递给要在其上调用方法的对象的新Runnable实现。没有办法可以直接主线程调用特定方法。
您可以从该线程生成新线程并调用所需的方法。