线程安全以及线程安全的办法——volatile、synchronized、Lock、ReentrantLock

本文介绍了Java中线程安全的相关概念,包括线程启动、中断、等待的方法,以及线程状态。接着讨论了线程不安全的原因,并详细解析了volatile关键字的作用和局限。接着对比了synchronized和Lock(特别是ReentrantLock)在解决线程安全问题上的差异,强调了它们在加锁和释放锁上的策略。最后,探讨了synchronized的使用场景和Lock的灵活性。
摘要由CSDN通过智能技术生成

多线程中start方法和run方法的区别:
run方法属于普通方法,而start方法是唯一启动线程的方法;
run方法可以调用多次,start只可以执行一次;
线程中断方式:
1.使用全局自定义变量(终止的方法比较温柔,只有在当前这一次任务执行完才停止);
2.使用线程提供的方法interrupt来终止线程(改变interrupted的状态);
Thread.interrupted()判断完线程状态之后,就会将线程状态重新赋值为false,而Thread.currentThread.isInterrupted()不会重置状态,但是线程出现异常时还是会重置状态。
3.使用线程提供的方法stop来终止线程(不用了,因为用它终止之后不会释放资源);
等待一个线程:
join方法
获取当前线程:
currentThread方法
线程的状态:
在这里插入图片描述
NEW:新建状态,没有调用start之前;
RUNNABLE:就绪状态(宏观:运行状态)
BLOCKED:阻塞状态
TIMED_WAITING:超时等待状态,有明确的等待结束的时间,比如sleep
WAITING:等待,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值