日期:2014-05-20  浏览次数:20738 次

简单的线程调用问题
我想实现类似于模式对话框的功能,就是在线程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这个方法有可能会发生阻塞,这可能就是你不能这么做的原因。具体还需要高手来解答,本人只能解释道这里啦