
Java 并发编程
刘翔UP
生活中的20%是由发生在你身上的事情组成,
而另外的80%则是由你对所发生的事情如何反应所决定。
懂得接受,懂得控制情绪,调整心态的人,才能拥有更多的幸福。
只有消化了坏情绪,才能痛痛快快地拥抱好运气。
只有把握好情绪,我们才能更好地把握人生。
加油
展开
-
volatile与synchronized的区别 总线风暴
总线风暴# 由于Volatile的MESI缓存一致性协议,需要不断的从主内存嗅探和cas不断循环,无效交互会导致总线带宽达到峰值。 所以不要大量使用Volatile,至于什么时候去使用Volatile什么时候使用锁,根据场景区分。 volatile与synchronized的区别 volatile只能修饰实例变量和类变量,而synchronized可以修饰方法,以及代码块。 volatile保证数据的可见性,但是不保证原子性(多线程进行写操作,不保证线程安全);而synchronized是一.转载 2020-09-17 16:49:18 · 303 阅读 · 0 评论 -
ThreadLocal父子线程之间的数据传递问题
ThreadLocal父子线程之间的数据传递问题 一、问题的提出 在系统开发过程中常使用ThreadLocal进行传递日志的RequestId,由此来获取整条请求链路。然而当线程中开启了其他的线程,此时ThreadLocal里面的数据将会出现无法获取/读取错乱,甚至还可能会存在内存泄漏等问题,下面用代码来演示一下这个问题。 普通代码示例: 并行流代码示例: 二、问题的解决 ThreadLocal的子类InheritableThreadLocal其实已经帮我们处理好了,通过这个组件可以实转载 2020-09-15 16:54:23 · 1707 阅读 · 0 评论 -
Java线程中run和start方法的区别
区别:调用baistart方法实现多线du程,而调用run方法没有实现多线程 Start: 用start方法来启动线程zhi,真正dao实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。 public static vo转载 2020-09-08 14:18:47 · 103 阅读 · 0 评论