Java基础案例教程--第十二讲:多线程

第十二讲:多线程

一.预习笔记

1.线程概述

进程:在一个操作系统中,每个独立执行的程序都可以称为一个进程
线程:在一个进程中可以有多个执行单元同时执行,而这些执行单元就是线程
*创建进程比创建线程开销大,尤其时在Windows系统
*进程间通信比线程间通信慢,因为线程间通信就是读写同一个变量,故而速度很快

2.线程的创建

线程的创建一:继承Thread类,重写run方法,在测试类创建对象并调用start方法开启线程

在这里插入图片描述

线程的创建二:实现Runnable接口,重写run方法,在在测试类创建对象并调用Thread有参构造创建线程对象再调用start方法开启线程

在这里插入图片描述

两种创建线程的比较

在这里插入图片描述

线程的创建(**了解https://blog.youkuaiyun.com/qq_35241080/article/details/82530443)

3.线程的生命周期及状态转换

生命周期:线程的生命周期可以分为5个阶段,分别是:
  新建状态:创建一个线程对象后,该线程对象就处于新建状态,它此时仅仅由Java虚拟机分配了内存,没有任何线程的动态特征
  就绪状态:当线程对象调用了start后,该线程就进入了就绪状态,位于线程队列中,具备运行的条件,能否获取CPU的使用权并开始运行,需等待系统的调度
  运行状态:如果处于就绪状态的线程获取了CPU的使用权并开始执行run方法中的线程执行体,那该线程就处于运行状态
  阻塞状态:一个正在执行的线程在某些特殊情况下,会让出CPU的使用权并暂时中止自己的执行,进入到阻塞状态
  死亡状态:如果线程调用stop方法或者run方法执行完毕,又或者是线程抛出了一个未捕获的异常、错误,那该线程就进入了死亡状态
状态转换:

在这里插入图片描述

4.线程的调度

线程的调度:Java虚拟机会按照特定的机制为程序中的每个线程分配CPU的使用权,这种机制称为线程的调度
线程的优先级:1-10,值越大优先级越高(只是获取CPU的概率增大,并不是一定能获取CPU使用权)
线程的休眠:sleep()
线程让步:yield()
线程插队:join()

在这里插入图片描述
在这里插入图片描述

5.多线程同步

多线程容易出现bug:
bug1:

线程内部代码
在这里插入图片描述
在这里插入图片描述

bug2:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同步代码块后:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

同步方法后:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线程死锁:未能获得有效资源

二.课堂笔记

三.课后回顾





–仰望星空,脚踏实地;以梦为马,不负韶华

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值