- 博客(5)
- 收藏
- 关注
原创 关于线程安全的学习(2)--- synchronized()关键字
这个就是扩大了同步范围,完全没问题,当然代价就是会降低运行效率,毕竟需要运行的范围扩大了,当然不知道大家有没有注意到synchronized()里面不是this而是act了,这就还是上面讲的那个原则,如果放this的话,同步的就是AccountThread对象,在上面我们new了两次这个AccountThread对象,所以他不是共享对象,所以不能放this。第三种就是放到静态方法上,放到静态方法上就不是共享对象锁了,而是共享类锁,类锁与对象锁不同,类锁是一个类一把锁,类里有100个对象也还是一把类锁。
2025-02-20 23:15:48
1909
原创 关于线程安全的学习(1)
上面演示了线程不安全的后果,所以下面就该说如何让线程安全了,那就是使用synchronized 关键字,当然还有很多办法来解决线程安全问题,但是目前我也只学了synchronized关键字来解决线程安全问题,所以只能写这个了,而写synchronzied好像效率比较低,有更好的解决办法,之后也是要学习研究。在取钱的过程中,ATM取出五千,然后这个时候网络延迟,我的余额没有及时的更新,然后在柜台取钱的时候余额显示还是一万元,这个时候我的同伙取出五千,余额更新,变成五千,ATM也更新,还是变成五千。
2025-02-20 19:47:37
1278
原创 java线程的sleep方法、interrupt方法等学习
我使用t在main方法中调用sleep,按理说应该是让Test方法休眠,但是实际上它会让main方法休眠,这是因为sleep方法是一个静态方法,使用t.sleep()方法相当于使用Thread.sleep()方法,所以是在此方法中,让此方法休眠。上面的方法的意思就是过了10s后,唤醒线程,然后run()方法就会被强制唤醒,原本五分钟第一次叫我喝水,变成第10秒叫我第一次喝水,interrupt()方法的本质是使用了java的异常机制,运行后会打印异常信息,然后让唤醒线程让线程执行。”线程休眠”,这个“
2025-02-14 23:09:09
517
原创 线程的生命周期
就绪状态的意义就是线程具有了抢夺CPU时间片的权利,CPU时间片就是执行权,当线程抢夺到CPU时间片后,就开始执行run方法,run方法开始执行,标志着线程进入了运行状态。当抢夺到的CPU时间片用完后,线程会根据JVM的调度,继续回到就绪状态然后开始抢夺CPU时间片,当抢到时间片后会继续运行run方法,然后进入运行状态。阻塞状态则是在线程运行时遇到阻塞事件,例如sleep方法等,当线程结束阻塞状态后不会继续运行,而是会进入到就绪状态,重新参与时间片的抢夺。新建状态、就绪状态、运行状态、阻塞状态、死亡状态。
2025-02-12 23:19:18
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人