摘自:https://www.cnblogs.com/xcynice/p/qi_miao_de_thread_zhi_lv.html 进阶之路 | 奇妙的Thread之旅 前言# 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 需要已经具备的知识:# Thread ...
分类:
其他好文 时间:
2020-03-10 16:08:08
阅读次数:
67
场景描述:任务连续执行,任务之间存在关联关系。一个任务包含serialNo,relativeSerialNo两个关键属性。第一个任务relativeSerialNo为空,后续任务的relativeSerialNo为前一个任务的serialNo。 需求:得到的任务列表可能是乱序的,怎么让任务列表有序。 ...
分类:
编程语言 时间:
2020-03-06 15:50:37
阅读次数:
67
目录 1 保证内存可见性 2 禁止指令重排序 3 不保证原子性 1 保证内存可见性说到内存可见性就必须要提到Java的内存模型,如下图所示: 如上图所示,所有线程的共享变量都存储在主内存中,每一个线程都有一个独有的工作内存,每个线程不直接操作在主内存中的变量,而是将主内存上变量的副本放进自己的工作内 ...
分类:
其他好文 时间:
2020-03-05 13:25:10
阅读次数:
53
重排序方法 1. reserve() 反转 反转数组中元素的顺序。 2. sort() 重排序(默认升序) sort()方法可以对数组中的每一个元素进行排序,但是问题来了, 即便数组元素全部都是数值类型,此方法依然会将所有元素先转换成字符串再进行升序排序。 因此,为了解决这个问题,sort()方法允 ...
分类:
编程语言 时间:
2020-03-04 21:20:51
阅读次数:
85
多线程 课程内容 并发和并行 线程和进程 概念,区别 线程状态 Thread类 线程常用的方法及线程调度 sleep、yield、join、interrupet... 线程状态转化 关键字 volatile: 特征:可见性、禁止指令重排序 底层实现机制 线程同步:Synchronized 使用场景、 ...
分类:
编程语言 时间:
2020-03-03 15:00:27
阅读次数:
83
数据一致性部分借用大神“耗叔”的博客:https://coolshell.cn/articles/20793.html。 总结:volatile 关键字通过内存屏障禁止了指令的重排序,并在单个核心中,强制数据的更新及时更新到缓存。在此基础上,依靠多核心处理器的缓存一致性协议等机制,保证了变量的可见性 ...
分类:
其他好文 时间:
2020-03-02 20:44:01
阅读次数:
88
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>对象值去重排序</title> </head> <body> <script> let arrys = [ { serial: '1', option: '1' }, { seri ...
分类:
编程语言 时间:
2020-02-28 23:03:21
阅读次数:
66
一、 上下文切换问题:时间片一般是几十毫秒,任务从保存到再加载的过程就是一次上下文切换,多线程竞争锁时会引起上下文切换,时间片到了会引起上下文切换 减少上下文切换:1、无锁并发线程 2、CAS算法 3、使用最少线程 4、协程 死锁问题:1、尽量避免一个线程同时获得多个锁 2、尽量避免一个线程在锁内同 ...
分类:
其他好文 时间:
2020-02-22 20:01:20
阅读次数:
60
1. volatile的作用 保证共享变量对于多线程之间的可见性 防止指令重排序 2. 计算机的组成 程序启动后,会加载到内存中 内存中会有多条指令,由pc程序计数器来记录指令地址 指令执行,内存中的数据放入寄存器,ALU运算单元计算,计算完成后返回到寄存器,然后写入到内存 3. 线程可见性 可见性 ...
分类:
其他好文 时间:
2020-02-22 14:20:23
阅读次数:
72
可见性:可见性指的是一个线程对主内存的修改可以被其他线程及时地察觉到。 导致共享变量在线程间不可见的原因: 1、线程交叉执行 2、指令重排序结合线程交叉执行 3、共享变量的值没有及时更新到主存中 Java内存模型:Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规 ...
分类:
编程语言 时间:
2020-02-20 11:41:36
阅读次数:
79