Java高级
Java高级
慕言手记
研究方向:地理信息系统技术与应用
展开
-
CAS与synchronized
synchronized代表的是一种阻塞式的锁,得不到锁会进入阻塞队列,等待线程进行唤醒,有上下文切换的开销。原子变量是非阻塞式的,有冲突一直循环重试。public final int incrementAndGet() { for(;;) { int current = get(); int next = current + 1; if(compareAndSet(current, next)) return next; }}基于CAS可以实现乐观非阻塞式算法,还可以悲观阻塞式算法原创 2021-12-28 17:15:50 · 300 阅读 · 0 评论 -
线程池参数配置与Linux CPU
1、线程池核心线程数配置1)核心线程计算计算密集型:cpu的个数+1。IO密集型:2*cpu个数 + 12)linux查看cpu核数 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu cores"| uniq 逻辑CPU的个数 ,这个是我们的机器总的cpu的个数,也是设置线程池大小的时候考虑的cpu的原创 2021-08-11 10:36:32 · 617 阅读 · 0 评论 -
Java并发编程
待更新原创 2021-07-27 16:49:17 · 64 阅读 · 0 评论 -
多线程总结
多线程总结1、创建线程的四种方式2、线程池1、创建线程的四种方式1、通过继承Thread类实现,复写run方法 优点:代码简单 缺点:该类无法继承别的类,多个线程之间无法共享该线程类的实例变量。2、实现Runnable接口,复写run方法 优点:较继承Thread类,避免继承的局限性,适合资源共享。 缺点:代码复杂3、实现Callable call方法中可以有返回值,并且抛出异常。Runnable的run方法无返回值。4、创建线程池实现 就是创建一个实现多个线程的容器 线程池提供原创 2021-07-12 00:11:56 · 79 阅读 · 0 评论 -
Java8新特性基本使用与应用场景
Java8新特性基本使用与应用场景一、基本使用1)Lamda2)Stream二、应用场景一、基本使用1)Lamda2)Stream二、应用场景原创 2021-07-26 14:39:27 · 504 阅读 · 0 评论