课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
java编程开发语言是目前大多数软件开发程序员都在学习与应用的一种编程开发语言,下面我们就通过案例分析来了解一下,java编程开发线程常见状态都有哪些。
1、进程VS线程
进程和线程是包含关系,但是多任务既可以由多进程实现,也可以由线程实现,还可以混合多进程+多线程。
和多线程相比,多进程的缺点是:
创建进程比创建线程开销大很多,尤其是在Windows上
进程间通信比线程要慢,因为线程见通信就是读写同一个变量,速度很快
多进程的优点:
多进程稳定性比多线程高,因为在多进程情况下,一个进程的崩溃不会影响其他进程,任何一个线程崩溃会导致整个进程崩溃。
多线程的应用场景
程序中出现需要等待的操作,比如网络操作、文件IO等,可以利用多线程充分使用处理器资源,而不会阻塞程序中其他任务的执行
程序中出现可分解的大任务,比如耗时较长的计算任务,可以利用多线程来共同完成任务,缩短运算时间
程序中出现需要后台运行的任务,比如一些监测任务、定时任务,可以利用多线程来完成。
2、Java线程具有五中基本状态
新建状态(New):当线程对象对创建后,即进入了新建状态,如:Threadt=newMyThread();
就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;
运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就绪状态是进入到运行状态的入口,也就是说,线程要想进入运行状态执行,先必须处于就绪状态中;
阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:
等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;
同步阻塞--线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;
其他阻塞--通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
死亡状态(Dead):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。