上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 43 下一页
摘要: 并发偏重于多个任务交替执行,而多个任务之间有可能还是串行的,而并行是真正意义上的“同时执行” 阅读全文
posted @ 2019-08-19 14:49 fly_bk 阅读(177) 评论(0) 推荐(0) 编辑
摘要: synchronized,volatile都解决了共享变量 value 的内存可见性问题,但是前者是独占锁,同时只能有一个线程调用 get()方法,其他调用线程会被阻塞, 同时会存在线程上下文切换和线程重新调度的开销,这也是使用锁方式不好的地方。 而后者是非阻塞算法,不会造成线程上下文切换的开销。 阅读全文
posted @ 2019-08-19 09:14 fly_bk 阅读(206) 评论(0) 推荐(0) 编辑
摘要: ```java import sun.misc.Unsafe; /** * JDK8 * JDK 的此jar 包中的 Unsafe 类提供了硬件级别的原子性操作 */ public class UnsafeTest { //获得Unsafe的一个实例 static final Unsafe unsafe1 = Unsafe.getUnsafe(); static final long stateO 阅读全文
posted @ 2019-08-17 14:42 fly_bk 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 假如线程 A 和线程 B 同时处理一个共享变量,使用图所示 CPU 架构, 假设线程 A 和线程 B 使用不同 CPU 执行,并且当前两级 Cache 都为空, 那么这时候由于 Cache 的存在,将会导致内存不可见问题, 具体看下面的分析。 线程 A 首先获取共享变量 X 的值,由于两级 Cach 阅读全文
posted @ 2019-08-17 10:26 fly_bk 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 简单使用 java import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.ExecutorService; impo 阅读全文
posted @ 2019-08-17 09:51 fly_bk 阅读(155) 评论(0) 推荐(0) 编辑
摘要: ```java public class DaemonTheadDemo { public static void main(String[] args){ Thread thread = new Thread(new Runnable() { @Override public void run() { for (; ;) { } } }); thread.start(); //thread.se 阅读全文
posted @ 2019-08-17 09:08 fly_bk 阅读(304) 评论(0) 推荐(0) 编辑
摘要: demo2 阅读全文
posted @ 2019-08-16 14:49 fly_bk 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 补充案例: 阅读全文
posted @ 2019-08-16 10:49 fly_bk 阅读(157) 评论(0) 推荐(0) 编辑
摘要: ` Thread.yield()方法的作用:暂停当前正在执行的线程,并执行其他线程。(可能没有效果) yield()让当前正在运行的线程回到可运行状态,以允许具有相同优先级的其他线程获得运行的机会。因此,使用yield()的目的是让具有相同优先级的线程之间能够适当的轮换执行。但是,实际中无法保证yi 阅读全文
posted @ 2019-08-16 09:34 fly_bk 阅读(151) 评论(0) 推荐(0) 编辑
摘要: ```java import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class SleepDemo { //创建一个独占锁 private static final Lock lock = new ReentrantLock(); public static 阅读全文
posted @ 2019-08-16 09:08 fly_bk 阅读(290) 评论(0) 推荐(0) 编辑
上一页 1 ··· 30 31 32 33 34 35 36 37 38 ··· 43 下一页