我想实现类似于模式对话框的功能,就是在线程1调用线程2,待线程2运行结束后返回线程1继续运行,部分代码如下:
//被调用的线程
public class DiaDis extends Form implements Runnable, CommandListener {
private MainDis maindis;
boolean threadend;
...
public void run() {
Display.getDisplay(MainMIDlet.instance).setCurrent(this);
while (true) {
if (threadend) {
break;
}
thread.yield();
}
Display.getDisplay(MainMIDlet.instance).setCurrent(MainDis);
return;
}
public void commandAction(Command command, Displayable displayable) {
if (command.getCommandType() == Command.EXIT) {
threadend = true;
}
}
}
//主线程
public class MainDis extends Form implements Runnable, CommandListener {
private MainDis maindis;
...
private void CallDia() {
DiaDis diadis = new DiaDis(this);
Thread diathread = new Thread(diadis);
diathread.start();
try {
diathread.join();
} catch (InterruptedException ex1) {
}
...
}
}
但是我在调试时,发现运行到jion时就死循环了,哪位高手知道问题出在哪里吗,请指教.
本人初学J2ME,可能存在一些低级错误.
------解决方案--------------------------------------------------------
主次不分啊
------解决方案--------------------------------------------------------
commandAction API文档中有说明的,可以说由系统提供一个线程去 监听command是否被触发(当然Java有种机制可以不需要线程不断的去判断一个方法是否被执行),所以相当于你在一个线程当中不断的去 调用另外一个线程,而且 commandAction这个方法有可能会发生阻塞,这可能就是你不能这么做的原因。具体还需要高手来解答,本人只能解释道这里啦