Java高并发
张之海
硕士毕业于东北大学,现就职于北京某猫头鹰公司,大数据工程师职位。
展开
-
线程的三种创建方法及优缺点
第一部分 Java并发编程基础篇第1章 并发编程线程基础1.1 线程的三种创建方法及优缺点(1) 继承Thread优点:(当前线程)在Run方法内获取当前线程直接使用this即可。this.getName()为获取当前线程的名字。缺点:(1)(继承)使用Thread,不能进行多继承。(2)任务(run方法)没有返回值。package com.p1_2;//缺点:(继承)使用Th...原创 2019-07-31 12:23:29 · 1287 阅读 · 0 评论 -
线程通信
1 传统通信方式使用Object类的wait()、notify()、notifyAll()方法实现。这三个方法的调用:这三个方法不属于Thread类,属于Object类。这三个方法必须由同步监视器调用。(所以(1)同步方法中同步监视器就是this;同步代码块中同步监视器就是参数中的实例。(2)传统通信方式只适用于,使用同步监视器(synchronized)方实现线程同步的情况。)注意...原创 2019-08-19 10:37:01 · 175 阅读 · 0 评论 -
Lock和synchronized的区别和使用
原文链接:Lock和synchronized的区别和使用今天看了并发实践这本书的ReentantLock这章,感觉对ReentantLock还是不够熟悉,有许多疑问,所有在网上找了很多文章看了一下,总体说的不够详细,重点和焦点问题没有谈到,但这篇文章相当不错,说的很全面,主要的重点都说到了,所有在这里转载了这篇文章。在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。...转载 2019-08-19 10:39:26 · 218 阅读 · 0 评论 -
线程池
1 为什么要用线程池?减少资源消耗。直接使用线程池中的线程,不用再创建和销毁线程,减少了这部分工作消耗的资源。提高响应速度。需要线程时,不用再等待创建线程了。方便管理。线程池能对线程统一管理、分配、调优和监控。2 几种常见的线程池和使用场景Java中使用工厂类Executors生产线程池,可生产两种线程池:ExecutorService(立即执行线程池):尽快执行线程。(即只要线...原创 2019-08-19 22:13:58 · 177 阅读 · 0 评论 -
volatile与单例模式
参考文献:volatile关键字的作用、原理1 作用保持内存可见性:所有线程都能看到共享数据的最新值。防止指令重排序。2 实现2.1 怎么实现内存可见性(1)读取前先从内存刷新最新的值。(2)写入后立即同步回内存中。2.2 怎么防止指令重排什么是指令重排:基于偏序关系的Happens-Before内存模型中,指令重排技术大大提高了程序执行效率。在指令序列中 插入内存屏障来禁...原创 2019-09-07 10:20:53 · 956 阅读 · 0 评论