java学习之多线程

多线程

一、线程与进程

进程
1、执行中的程序
2、一个进程包含一个或多个线程
3、一个进程至少包含一个线程
线程
1、程序中单独顺序的控制流(流程)
2、线程本身依靠程序进行运行
3、线程是程序中的顺序控制流只能使用分配给程序的资源和环境

运行java程序的实质是启动java虚拟机进程也就是说Java程序运行的是一个java虚拟机进程。
线程是进程中可独立执行的最小的执行单元
同一进程中有多个线程
线程共享进程的资源(内存,空间,变量,方法)
单线程
程序中只存在一个主线程,实际上主方法(main)就是一个主线程
线程所要完成的计算被称为任务

多线程:
多线程是在一个程序中同时运行多个任务
多线程的目的是:更好的使用CPU资源,提高程序的计算效率
二、 创建线程
建状态(New):线程对象创建后,即进入新建状态

就绪状态(Runnable):当调用线程对象的start()方法,线程进入就绪状态。
处于就绪状态的线程,只是说明该线程已经做好了准备,随时等待CPU调度执行,并不是说执行了start()该线程就会执行

运行状态(Running):当CPU开始调度处于就绪状态的线程时,此时线程才开始执行,即进入运行状态。注意,就绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中

阻塞状态(Blocked):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态。直到其进入到就绪状态,才有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为3种:

  1. 等待阻塞:运行状态中的线程执行wait()方法
  2. 同步阻塞:线程在获取synchronized同步锁失败(因为锁被其它线程所占用)
  3. 其它阻塞:通过调用线程的sleep()、join()方法或发出I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或超时、或者I/O处理完毕时,线程重新转入就绪状态

死亡状态(Dead):线程执行完毕或者因异常退出了run()方法,该线程结束生命周期,线程销毁。
在这里插入图片描述
三、串行、并发、并行
1、串行
一个人,顺序的做多个任务,总耗时是多个任务耗时总和
a:1------>2----->3
2、并行
一个人,并发的做多个任务,即一个人先执行一个任务,在执行这个任务期间,有一段时间是空闲的,他利用这段时间去执行另外的任务,这样交替执行
a:1------>3----->
a:2------>
3、并发
多个人同时做多个任务总耗时取决于用时最长的任务
a:1-------->
b:2--------->
c:3------->

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值