黑马程序员——JavaSE之多线程原理分析一

        之前学javase时老师一直强调多线程,IO流等很重要,越到后面有时用的越频繁。在用的时候自己半天想不起来某些方法,所以今天特意准备一篇,也是为了重新复习下,如果有什么不对的,不完善的地方还希望大家多多提建议。

        在计算机操作系统中,存在进程、线程、程序。这里就简单解释下,以便区分。

         程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。

         >如:没有运行时的QQ(静态的)

     进程(process)是程序的一次执行过程,或是正在运行的一个程序的状态过程:有它自身的产生、存在和消亡的过程。(会显示在任务控制器中)

         >如:运行中的QQ(动态的)

     线程(thread),进程可进一步细化为线程,是一个程序内部的一条执行路径。

         >若一个程序可同一时间执行多个线程,就是支持多线程的。

     觉得有时还是分不清,进程和线程,这是可以把进程比喻成多个道,每个道都是由线程组成的。


  这时说到线程,就不得不提一下线程的生命周期,就是指线程从创建开始一直到消亡的这个过程。

    生命周期分为5个状态创建状态、就绪状态、运行状态、等待状态(阻塞或睡眠)和死亡状态。
          1.创建状态。这个线程刚被创建,还没有调用start()方法。这是创建的对象,不能通过isAlive()测试。

    2.就绪状态。这时这个线程调用start()方法进入Runnable状态。这是的线程具备了运行时的条件,一旦被调度程序选为运行线程时所处的状态,就会立刻执行。此时的线程不是处于运行状态,但是可以通过isAlive()测试。

 3.运行状态。

 4.等待、阻塞或者睡眠状态。线程只是缺少运行条件,一旦条件满足,就会转换到就绪状态。

           5.死亡状态。一旦线程死去,就不会重新启动,不能再次调用start()方法了。如果继续调用会抛出IllegalThreadException异常。


    其中CPU的调度也是值得一提的,在某一时刻CPU具体要运行谁是由CPU和线程的优先级决定的,当线程被CPU运行时,就会开始执行run方法,但可能执行到一半CPU又会被其他可运行线程抢走,而只能暂停执行。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值