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方法而使线程猝死。

总结很重要哦 方法得当,坚持会有奇迹哦
原文地址:https://www.cnblogs.com/sunyuhuan/p/7206149.html