刚开始学习多线程的时候出现了IllegalThreadStateException(非法的线程状态异常)这个错误。
经检查发现是同一个线程不能多次执行start()方法。
MyThread mt = new MyThread();
mt.start();
mt.start();
主要是因为线程有四种状态
**1. 初始状态;
在调用start()方法之前
- 可运行状态;
调用start()方法后,系统为该线程分配除cpu外的所需资源,等待被线程调度选中,获取cpu 的使用权 。
- 运行状态
线程获得cpu执行权,执行程序代码的过程
- 阻塞状态
一个正在运行的线程因某种原因不能继续运行时,进入阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态
- 死亡状态
死亡状态:一个线程的run()运行完毕,stop()方法被调用或者在运行过程中出现了未捕获的异常时,线程进入死亡状态。
**
解决方法:
多创建一个线程对象,再次调用start()方法