解决java Android 中同一个线程多次运行问题
2016-10-11 09:32
316 查看
在java中同一个线程只能被start()一次,当第二次start()就会报异常。但是我们的软件需求常常需要同一个线程多次执行同一个方法。为此可以使用notify(),wait()方法来达到我们想要的效果。先看代码
我的做法是让子线程循环执行前等待主线程的通知,当主线程发出通知后子线程才能继续循环执行,每一次执行都需要等待,当然如果想结束子线程直接跳出循环就可以。
以上思路代码均为自己的理解,如有错误之处敬请各位大神予以斧正。
public class ThreadTest extends Thread { private static boolean flag = false; public ThreadTest() { System.out.println("threadID is :"+Thread.currentThread().getId()); start(); } /** * @param args */ public static void main(String[] args) { System.out.println("main threadID is :"+Thread.currentThread().getId()); ThreadTest test = new ThreadTest(); try { sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } synchronized (test) { test.notify(); } try { sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } synchronized (test) { test.notify(); flag = true; } } public void threadStart() { if (!isAlive()) { start(); } } @Override public void run() { while(true){ try { System.out.println("threadID is :"+Thread.currentThread().getId()); synchronized (this) { wait(); } if (flag) { break; } } catch (InterruptedException e) { e.printStackTrace(); } } } }
我的做法是让子线程循环执行前等待主线程的通知,当主线程发出通知后子线程才能继续循环执行,每一次执行都需要等待,当然如果想结束子线程直接跳出循环就可以。
以上思路代码均为自己的理解,如有错误之处敬请各位大神予以斧正。
相关文章推荐
- Android动画问题:主线程在运行一个动画,但开启子线程后动画就停止了
- 一个Android应用开发菜鸟的成长之路——工作第一天:解决了java.lang.NoClassDefFoundError问题
- 一个简单的Java对象池实现——可用来解决SimpleDateFormat的线程安全问题
- Android开发学习解决程序运行就出错的一个问题
- 解决打开Android SDK Manager时出现“.....\sdk\tools\lib\\find_java.exe不是内部或外部命令,也不是可运行的程序或批处理文件“问题
- 解决Eclipse每次运行Android项目都重新打开一个模拟器问题
- 多次运行一个存储过程时一些模忽问题
- 解决android Launch2.2 源代码编译运行问题
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- Java怎样中断一个运行中的线程(3)
- 《Thinking in Java》RMI远程方法示例代码运行是可能遇到的问题及解决方法
- Java怎样中断一个运行中的线程(1)
- 一个困扰我半天的问题解决了,java环境真的很难配置
- Java怎样中断一个运行中的线程(2)
- java线程同步问题(一个理解wait()与notify()的例子)
- Java怎样中断一个运行中的线程(2)
- 转:解决VC2005程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
- 解决VC2005程序的一个运行错误“由于应用程序的配置不正确,应用程序未能启动,重新安装应用程序可能会纠正这个问题”
- 今天解决了的一个DEBUG运行正常RELEASE出错的问题!
- java中遇到的一个问题及解决方法