Thread和Runnable的区别
Java中有两钟实现多线程的方式:一种是继承Thread类,一种是实现Runnable接口,
其中Runnable用的多,因为避免了继承的单一性(Thread),另外就是适合资源共享
但是在使用Runnable定义的子类中没有start()方法,只有Thread类中才有。
多线程有状态:新建 就绪 阻塞 运行 死亡状态
新建状态:通过new一个县城 Thread t1=new Thread();
就绪状态:调用线程的start()方法就是启动了线程
运行状态:当线程获得CPU时间后,它才执行run方法
阻塞状态(Blocked)
线程运行过程中,可能由于各种原因进入阻塞状态:
1>线程通过调用sleep方法进入睡眠状态;
2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;
3>线程试图得到一个锁,而该锁正被其他线程持有;
4>线程在等待某个触发条件; ......
所谓阻塞状态是正在运行的线程没有运行结束,暂时让出CPU,这时其他处于就绪状态的线程就可以获得CPU时间,进入运行状态。
死亡状态(Dead)
有两个原因会导致线程死亡: 1) run方法正常退出而自然死亡, 2) 一个未捕获的异常终止了run方法而使线程猝死。
总结很重要哦 方法得当,坚持会有奇迹哦