在一段代码中,启动一个线程,需要等到该线程结束后才执行下一段代码,代码该如何写?
我这样写,但好象不行:
//先启动线程
ThreadSendMail threadSendMail = new ThreadSendMail();
threadSendMail.start();
//判断线程序是否线束.结束了再执行下一段代码
while (!threadSendMail.aLive()){
..........
}
各位,线程启动后立即去判断是否结束好象是有问题的,这时线程显然没有结束,但while这段代码就飘过了,没被执行,正确的表达应该是怎样的呢?多谢围观
线程 多线程
------解决方案--------------------
嗯 是滴 因为启动线程后就不确定执行顺序了 所以会存在一定问题
有两种 一是在线程里加上状态(全局的状态变量) 当线程执行后 修改状态 供其他地方读取
二 可以在启动线程后 在当前线程 睡0.3s左右 防止判断条件执行太快 或者在线程结束后 向当前线程发送消息
------解决方案--------------------
使用handler处理不是更好吗,在线程结束时发送一个message,把你要执行的代码放在handler里。
------解决方案--------------------
在线程的末尾加上一个handler.sendMessage(Message msg),发送消息,然后就可以在Handler类里的handlerMessage(Message msg)执行你想要的操作
------解决方案--------------------
一般不会去判断的,因为你要启动这个判断也要发送消息。
那不如直接发送消息好了。
------解决方案--------------------
用锁啊

------解决方案--------------------
1. 观察者模式,回调函数
2. Message