.对基础类型排序方法一:调用sort方法,如果需要降序,进行反转: List<int> list = new List<int>(); list.Sort();// 升序排序 list.Reverse();// 反转顺序方法二:使用lambda表达式,在前面加个负号就是降序了 List<int> l ...
分类:
编程语言 时间:
2019-02-01 17:13:05
阅读次数:
326
volatile关键字很重要的两个特性: 1、保证变量在线程间可见,对volatile变量所有的写操作都能立即反应到其他线程中,换句话说,volatile变量在各个线程中是一致的(得益于java内存模型—"先行发生原则"); 2、禁止指令的重排序优化; 所以volatile 并非原子性操作。 Ato ...
分类:
编程语言 时间:
2019-01-28 17:43:27
阅读次数:
204
volatile的作用:1.内存可见性2.禁止指令重排序可见性是指,在多线程环境下,共享变量的操作对于每个线程来说,都是内存可见的,也就是每个线程获取的volatile变量都是最新值;并且每个线程对volatile变量的修改,都直接刷新到主存。下面重点介绍指令重排序。一、为什么要指令重排序为了提高程 ...
分类:
其他好文 时间:
2019-01-27 21:46:13
阅读次数:
186
java1.8新特性:多重排序,简化比较器排序代码量。亲测有效! ...
分类:
编程语言 时间:
2019-01-26 18:56:24
阅读次数:
186
volatile关键字有两个特性: volatile变量对所有线程的可见性,指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 volatile变量可以禁止指令重排序优化。 因为JVM要求线程每次使用工作内存中的volatile变量时,都必须从主内存中刷新获取最新的值;执行线程每... ...
分类:
其他好文 时间:
2019-01-22 00:37:45
阅读次数:
186
1.并发编程三要素 原子性 原子,即一个不可再被分割的颗粒。在Java中原子性指的是一个或多个操作要么全部执行成功要么全部执行失败。 有序性 程序执行的顺序按照代码的先后顺序执行。(处理器可能会对指令进行重排序) 可见性 当多个线程访问同一个变量时,如果其中一个线程对其作了修改,其他线程能立即获取到 ...
分类:
其他好文 时间:
2019-01-09 18:53:26
阅读次数:
183
一、基础篇JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 ...
分类:
编程语言 时间:
2019-01-08 10:48:52
阅读次数:
254
1、volatile的作用 一个线程共享变量(类的成员变量、类的静态成员变量等)被volatile修饰之后,就具有以下作用: 1)并发中的变量可见性(不同线程对该变量进行操作时的可见性),即一个线程修改了某个变量的值,则该新值对其他线程立即可见(可立即访问新值/立即强制写入主存); 2)禁止指令重排 ...
分类:
编程语言 时间:
2019-01-06 19:22:09
阅读次数:
215
volatile 一、 volatile修饰的变量具有内存可见性 volatile是变量修饰符,其修饰的变量具有内存可见性。 可见性 也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值。 在Java中为了加快 ...
分类:
编程语言 时间:
2019-01-02 12:24:59
阅读次数:
163