- 博客(5)
- 收藏
- 关注
原创 单例模式(校招经典面试题)!!!!
那么如何解决呢,利用synchronized(加锁)来解决,也就是上述代码,那么这个代码真的很好嘛,网上百分之九十以上的博客是这么教你的!但是还有一个小小的问题,即使发生的概率很小,但如果在实际开发中可能就会造成bug!在实际开发中当我们某个资源有限的情况,把所有的任务都完成是没有必要的,只需完成最近需要的就可。而(2)修改了数据,可能会导致多个线程修改一个变量,进而导致线程不安全问题,下面链接的第二条。饿汉模式,也就是(1),认为线程是安全的,只是读数据,而没有修改数据;这一步就会可能导致指令重排序!
2024-02-03 22:45:22 513 1
原创 wait和sleep对比(经典面试题)
4、再进一步,只是java这里的sleep和wait用法上看起来很像,其他语言或者系统也提供了sleep和wait这样的方法,就差别很明显了。1、首先,最大的区别在于初心不同:wait是解决线程之间的顺序问题,sleep仅仅是让线程休眠一会。1、wait有一个带参数的版本,用来体现超时时间,这方面和sleep很像。3、wait是Object的方法,sleep是Thread的静态方法。2、wait需要搭配synchronized使用,sleep不需要。2、wait和sleep都可以提前唤醒。
2024-02-02 20:18:31 446
原创 线程不安全的原因(实际开发中经常出bug的地方)
3、修改操作不是原子(不是一气呵成)的。4、内存可见性,引起的线程不安全。5、指令重排序,引起的线程不安全。1、抢占式执行(最常出现)2、多个线程修改一个变量。
2024-02-01 22:33:06 405
原创 thread的中interrupt方法的作用(易理解错)
当sleep被唤醒的时候,sleep会自动把isinterrupted标志位清空(true->false)2、如果该线程正在阻塞中(比如在执行sleep)这就导致下次循环,循环仍然可以继续执行。通过抛出异常方式让sleep立即结束。1、设置标志位为true。此时就会把阻塞状态唤醒。
2024-02-01 20:34:56 430
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人