System.out.println("Thread1:"+threadLocalRandom.nextInt(10));
}
});
Thread thread2 = new Thread(()->{
for (int i=0;i<10;i++){
System.out.println("Thread2:"+threadLocalRandom.nextInt(10));
}
});
thread1.start();
thread2.start();
}
自增引荐运用LongAddr自增运算可以经过 synchronized 和 volatile 的组合来控制线程安全,或许也可以运用原子类(比如 AtomicLong)。
后者的速度比前者要高一些,AtomicLong 运用 CAS 停止比较交流,在线程多的状况下会形成过多有效自旋,可以运用 LongAdder 交流 AtomicLong 停止进一步的功用提升。
public class Test {
public int longAdderTest(Blackhole blackhole) throws InterruptedException {
LongAdder longAdder = new LongAdder();
for (int i = 0; i < 1024; i++) {
longAdder.add(1);
}
return longAdder.intValue();
}
}
顺序中要少用反射反射的功用很弱小,但它是经过解析字节码完成的,功用就不是很理想。
理想中有很多对反射的优化办法,比如把反射执行的进程(比如 Method)缓存起来,运用复用来加快反射速度。
Java 7.0 之后,参加了新的包java.lang.invoke,同时参加了新的 JVM 字节码指令 invokedynamic,用来支持从 JVM 层面,直接经过字符串对目的办法停止调用。
【编辑引荐】
微软开源的可视化神器,上手太酷炫了
Cube.js:试试这个新的数据剖析开源工具
为什么在 2021 年我依然引荐你运用 Linux
微软 Windows 11 晋级运转并非必须满足 TPM 2.0 ,但需求 TPM 1.2 以上
Windows 11硬件要求难倒玩家 TPM 2.0模块价钱暴涨3倍
(责任编辑:admin)