课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在前几期的文章中给大家简单介绍了Java编程线程与进程之间的一些基础知识等内容,而本文我们就继续来学习一下,线程生命周期与创建方法。
一、线程生命周期
线程的几种状态转换
1、新建(New)
新创建了一个线程对象,但还没有调用start()方法。
2、就绪
当线程对象调用了start()方法后,该线程就进入就绪状态。处于就绪状态的线程位于线程队列中,此时它只是具备了运行的条件,能否获得CPU的使用权并开始运行,还需要等待系统的调度。
3、运行(Runnable)
如果处于就绪状态的线程获得了CPU的使用权,并开始执行run()方法中的线程执行体,则该线程处于运行状态。
一个线程启动后,它可能不会一直处于运行状态,当运行状态的线程使用完系统分配的时间后,系统就会剥夺该线程占用的CPU资源,让其他线程获得执行的机会。需要注意的是,
只有处于就绪状态的线程才可能转换到运行状态。
4、阻塞(Blocking)
等待获取一个排它锁,如果其线程释放了锁就会结束此状态。
①无限期等待(Waiting)
等待其它线程显式地唤醒,否则不会被分配CPU时间片。
5、死亡(Terminated)
如果线程调用stop()方法或nun()方法正常执行完毕,或者线程抛出一个未捕获的异常(Exception)错误(Error),线程就进入死亡状态。一旦进入死亡状态,线程将不再拥有运行的资格,也不能再转换到其他状态。
理解线程的五种状态,在调用多线程的方法时,能清楚的知道当前处于哪个状态。
二、创建线程的三种方式
有三种使用线程的方法:
实现Runnable接口;
实现Callable接口;
继承Thread类。
实现Runnable和Callable接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此后还需要通过Thread来调用。可以说任务是通过线程驱动从而执行的。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。