线程理解浅谈

线程理解随笔
前言:这篇文章主要介绍
1什么是线程,线程与进程
2线程的生命周期

主要做理解性记录,不甚详细
一,线程与进程
进程:是操作系统分配资源的最小单位。
线程:是系统可运行的最小单元。
前边是概念,不够接地气。我的理解是进程是具有单独资源空间,可运行的功能块,而线程是功能块中具体的也是最小的执行者。对于Java来说整个虚拟机都可以看做是一个容器。进程是有单独且相对固定的资源持有者,而线程则是对进程资源分配的执行者,进程的边际只能无限靠近进程所拥有的资源。
创建:继承Thread,实现Runnable,和实现Callable几口,接口的实现主要是因为Java语言单继承的局限。而一般不建议使用callable,因为callable有返回值,需要封装才能接收,较麻烦(一般用Java自带的FutureTask封装)
二,线程的生命周期
在这里插入图片描述

(1)创建 new一个
(2)就绪状态,Start,表示随时可以执行,若没有阻塞可直接得到资源执行
(3)运行,Run , 执行方法体,也就是线程的实际操作
(4)阻塞,阻塞主要有wait(),sleep(),yiled(),join()
wait是object中的方法,等待,暂时挂起,不释放资源,需要靠notify(), notifyAll()唤起一个唤起当前,一个唤起全部
Sleep()方法如其名,睡一会,休眠状态,到时间会自动唤起,休眠期间释放锁,其他线程可用。

Yiled() 让掉当前已有资源,重新抢夺,有可能失去资源,也有可能重新分配,看命
Join()串行执行
(5)销毁 线程执行完毕,被GC回收,也有可能异常意外死亡

备注one
Stop()一般不用此方法,已废弃,强制释放那个资源,有可能把锁也搞没了,Java讲究的是协作。所以一般用温和一点的方式使用interRupt()标记线程状态,告知当前线程处于中断状态,至于是否中断由线程本身决定,不强制。一般搭配interrupted()使用,判断其当前状态。Interrupted ()是interRupt()静态使用。

备注two
线程几种方式的调用顺序,start和run要搞清楚差别,老有人分不清两者区别,分清使用场景即可识别使用,是作为类方法使用还是作为线程方法体使用

结束语:一只很菜的菜狗,全手打无CV,难免错误,个人理解,理解有误,欢迎指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值