栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

线程第二天

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线程第二天

Author:老九
计算机专业
可控之事 沉重冷静 不可控之事 乐观面对
85180586@qq.com
         ☺️  

      ❓  ❤️ ☕️       ❗️ 
————————————————
版权声明:本文为CSDN博主「浦上青天」的原创文章

文章目录

总结第一天

run和start区别 线程

this.getname和Thread.currentThread.getname七种方法启动一个线程中断一个线程

interrupt() 线程等待 join()方法线程阻塞线程状态
知识点

总结第一天

线程和进程都是并发编程的方式
进程是一个可执行程序跑起来了,就会在系统中分配一些资源,同时对应一个进程
一个进程内部包含若干个执行流,每个执行流都能独立的在CPU上调度执行,就是线程
线程是包含进程中的,创建一个进程之后,里面至少有一个线程,进程可以创建多个线程,这里的多个线程之间共享着资源
线程比进程更轻量
由于多个线程之间资源共享(内存,打开的文件),创建新线程时,共享资源不需要重新分配
创建线程的开销,比创建进程小很多
销毁线程的开销也比销毁进程小很多
每个线程都有自己的状态,上下文,记账信息等辅助调度的信息->有一个对应的PCB
每个线程都有自己的调用栈
新线程和原有线程之间是并发执行的关系

run和start区别

run只是一个普通的方法调用,没有创建新线程,输出语句是在原线程中执行的,start是要创建一个新的线程,由新的线程来执行输出

线程 this.getname和Thread.currentThread.getname

如果是使用继承Thread的方式来创建线程,这个操作就是和this是一样的
如果是使用Runnable的方式或者lambda的方式,此时就不能用this

七种方法

启动一个线程

start()方法

中断一个线程

中断是让一个线程结束
结束可能有两种情况
1.已经把任务执行完了(让线程的run执行完)
2.任务执行了一半,被强制结束(调用线程的interrupt方法)

interrupt()

这个操作本质上是给该线程触发一个异常。InterruptedException
此时线程内部就会收到这个异常,具体针对这个异常如何处理,这是catch内部的事情

线程等待 join()方法

线程之间是并发执行的关系
多个线程之间,谁先执行,谁后执行,谁执行到哪里让出CPU,作为程序员是完全无法感知的,全权由系统内核负责
join()方法:执行join方法的线程就会阻塞,一直阻塞到对应线程执行结束后,才会继续执行
存在的意义就是为了控制线程结束的先后顺序

线程阻塞

关于线程休眠

内核态有就绪队列和阻塞队列,调用哪个线程,将就绪队列的pcb分配资源(包括CPU),如果sleep的话,就将PCB从就绪队列转移到阻塞队列中,进入阻塞队列没办法上CPU执行,实现线程阻塞

线程状态

JAVA中线程的状态是通过一个enum来表示的

NEW:Thread对象有了,内核中的线程(PCB)还没有,任务布置了,但是还没开始执行
RUNNABLE:就绪状态,当前线程正在CPU上执行或者已经准备好随时上CPU,有一个专门的就绪队列来维护
BLOCKED/WAITING/TIMED_WAITING:阻塞状态,当前线程暂时停了下来,不会继续到CPU上执行,blocked是等待锁,waiting是wait调用,timed_waiting是sleep导致的
TERMINGATED:内核中的线程已经结束了(PCB没了),但是代码中的Thread对象还在(这个对象得等GC来回收)
isAlive线程存活:除了NEW和TERMINATED之外,其他状态都表示线程存活(PCB是否存活)
yield方法:让当前线程放弃CPU的执行权限,重新在就绪队列中排队,相当于sleep(0 )

先赞后看,养成习惯!!!^ _ ^♥♥♥
每天都更新知识点哦!!!
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘记关注我哦!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/721421.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号