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

线程第三天

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

线程第三天

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

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

文章目录

总结第二天第三天

线程状态 线程安全问题

线程不安全原因

自增操作不是原子的(加锁)

锁synchronized 多个线程同时修改同一个变量
知识点

总结第二天

Thread构造 指定线程名字
Thread的常见属性
Thread的start方法。调用start才是真正在内核中创建出线程(Thread对象和内核中的PCB的生命周期不一样)
线程的中断
a)温和的方式:借助标志位,线程入口方法内部整个循环,循环来判断标志位,能保证当前这次循环结束了再结束线程(结束的不够及时)
b)激烈的方式:interrupt方法(能够及时的让线程内部感知到通知,但是是否真的要结束线程,还是得线程自身说了算)
线程等待join方法,线程A调用了线程B的join方法,此时A就阻塞,一直阻塞到B这个线程执行结束。存在的意义就是为了控制线程之间结束先后顺序
获取线程引用:Thread.currentThread哪个线程在调用这个方法,获取到的引用就指向哪个线程
当前线程是通过继承Thread的方式来创建的,类似于this,若用runnable或者lanmda方式创建,就不能用this了
线程休眠sleep方法。线程A调用了sleep,A就被阻塞。阻塞到sleep指定的时间到

第三天 线程状态

NEW:Thread对象有了,但是PCB还没有
RUNNABLE:线程正在CPU上执行或者即将到CPU上执行
WAITING/TIMED_WAITING/BLOCKED:都表示线程被阻塞
TERMINATED:Thread对象还在,但是PCB已经没了

线程安全问题

多线程并发编程最重要,最复杂的问题
线程不安全:多线程并发执行某个代码时,产生了逻辑上的错误,就是“线程不安全”

线程不安全原因

1.线程是抢占式执行的(线程不安全的万恶之源)
因为线程之间的调度完全由内核负责,用户代码中感知不到,也无法控制,线程之间谁先执行,谁后执行,从哪个CPU上下来,用户都无法感知
2.自增操作不是原子的(要么就执行完,要么就不执行)
3.多个线程尝试修改同一个变量
4.内存可见性导致的线程安全问题
5.指令重排序(JAVA的编译器在编译代码的时候,会针对指令进行优化,调整指令的先后顺序,保证原有逻辑不变的情况下,提高程序的运行效率)

自增操作不是原子的(加锁) 锁

锁:和日常生活中的锁类似(ATM)
特点:互斥的,同一时刻只有一个线程能获取到锁,其他的线程如果也尝试获取锁,就会发生阻塞等待,一直等到刚才的线程释放锁,此时剩下的线程再重新竞争锁
锁的基本操作:1.加锁(获取锁)2.解锁(释放锁)
关键字:synchronized(同步)
synchronized具体使用:
可以灵活指定某个对象来加锁,尔不仅仅是把锁加到某个方法上,如果把synchronized关键字写在方法前,相当于给当前对象(this)来加锁(所谓的i加锁,其实是给某个指定的对象来加锁)
对象new出的对象会给这个对象申请一块内存空间,这个对象内存不仅存储一些代码中指定的属性,还有一个”对象头“,这个就相当于一个boolean,未加锁就是false,加锁了就是true

synchronized

synchronized几种常见用法
1.加到普通方法前:表示锁this
2.如果加到静态方法前:表示锁当前类的类对象
3.加到某个代码块之前,显示指定给某个对象加锁

获取同一把锁的时候,可能会出现获取锁的阻塞,一个代码块获取到锁之后,另一个代码块就会等待,直到第一个代码块释放锁的时候,第二个代码块才会获取锁

多个线程同时修改同一个变量

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

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

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

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