[黑马程序员]--Java语言基础-多线程

------- android培训java培训、期待与您交流! ----------

多线程:

1概念:多线程:允许多个线程并发执行,提高程序运行效率

进程:就是一个独立执行的程序.打开任务管理器,就可以看到各种进程.系统总是分配给每一个进程一段有限的使用CPU的时间,这段时间称之为CPU时间片,CPU在这段时间只会执行某个进程,然后在下一个时间片又随机跳转到另外一个进程中取执行,由于CPU切换很快,所以我们会觉得每个进程好像是同时进行的.

    而一个线程则是进程中的执行的流程,一个进程可以同时包含多个线程,每个线程也可以随机得到一段CUP的执行权.和CPU在进程中切换的模式一样,当CPU进入到一个进程中,它会在各个线程间随机切换执行,切换速度很快,同样好像是同时执行一样,这就是多线程的并发执行.

    在单线程中,程序代码按照调用顺序依次往下执行,如果需要一个进程同时完成多段代码的操作,就需要产生多线程.单核的CPU,多个线程或进程不可能同时执行,多核的CPU下,可以同时执行.单核和多核的概念,就像是一个人不可能同时完成吃饭和睡觉,多个人就可以了.

 2.动态理解线程的运行状态

    一个线程一旦被创建,就立即进入运行状态.在运行过程中,如果被sleep或者wait就进入冻结状态(包括睡眠状态和等待状态),也就是说此时该线程放弃了执行资格.在冻结状态和运行状态之间还存在着阻塞状态.该状态是临时状态,也就是线程拥有运行资格,但没有执行权,它在等待CPU执行权的到来.当在冻结状态中的线程被notify或者sleep时间结束后,并不是马上进入运行状态,而是先进入阻塞状态,当CPU执行权到来的时候才回到运行状态.最后就是消亡状态,当线程被stop()或者run()方法结束后就进入消亡状态.

3.创建线程的两种方式

       <1>.继承Thread类,并复写run()方法,然后用start()方法开启线程.

      <2>.实现Runnable接口,复写run()方法,然后用new Thread()封装,在用start()开启.

4.线程的同步

        <1>. 多线程并发时,即同时访问共享数据时,为了防止由于CPU的随机切换而造成的延迟性操作异常,必须上锁,.格式为:

            synchronized (锁对象)  {同步代码}    锁对象相同的同步代码同一时间只有一个线程可以执行, 其他线程等待

           使用"synchronized"关键字修饰一个方法, 那么整个方法中的代码都是同步的, 使用"this"作为锁对象.

<2>. 使用Lock接口的子类来进行同步
            lock()方法为开始同步
            unlock()方法为结束同步. 为了避免出现异常不能执行, 最好放在finally代码块中执行

5.线程间通信

     <1>. JDK1.4以及之前

           在synchronized (锁对象) {同步代码}中

           使用锁对象的wait()方法开始等待
           使用锁对象的notify()方法唤醒随机一个等待的线程
           使用锁对象的notifyAll()方法唤醒所有等待的线程

     <2>.JDK1.5出现之后

           针对synchronized不能唤醒指定线程的缺点,新锁Lock和Condition出现了.

          Condition将Object监视器方法wait,notify,notifyAll分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,其中,Lock替代了synchronized的方法用,Condition 替代了Object监视器方法的使用.

           用法如下:

           使用Lock的newCondition()方法可以创建一个Condition对象
           使用Condition对象的await()方法等待
           使用Condition对象的signal()方法唤醒指定一个线程

------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值