并发编程总结
文章平均质量分 74
Hankin晚风
生死看淡不服就干!
展开
-
Callable项目实战应用
Callable项目实战应用package com.carnation.config;import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.spri原创 2021-08-20 11:48:20 · 255 阅读 · 0 评论 -
ForkJoinc项目实战2021-08-20
ForkJoinc项目实战@Overrideprotected void tableColumn(Schema schema) {/* 第一步:查询所有table*/log.info("【Oracle采集】tableColumn,正在获取 " + schema.getName() + " 下的表,请耐心等待-----");long startTime = System.currentTimeMillis();umiStatusLogService.createSimpleLog(etlId,原创 2021-08-20 11:39:55 · 275 阅读 · 0 评论 -
线程安全的单例模式几种创建方式
线程安全的单例模式1、双重检查锁定原理:在getInstance()方法中,进行两次null检查。这样可以极大提升并发度,进而提升性能。public class SingletonDoubleCheck {//TODO 注意如果不适用volatile 关键字无法保证线程安全private volatile static SingletonDoubleCheck sDo...原创 2019-12-01 21:36:57 · 459 阅读 · 0 评论 -
常见并发面试题
一、谈面试1、面试主要分为两块:一块是考查工程师对基础知识(包括了技术广度、深度、对技术的热情度等)的掌握程度,因为基础知识决定了一个技术人员发展的上限;另一块是考察工程师的工程能力,比如:做过哪些项目?遇到最难的问题怎样解决的?说说最有成就感的一项任务?工程能力是考察工程师当下能为公司带来的利益。当然还有其它考核方面:抗压性、合作能力。2、Java只是一门语言,即使是Java工程师也不能...转载 2019-06-02 16:27:29 · 2308 阅读 · 0 评论 -
第十章 JMH性能测试
JMH,即Java Microbenchmark Harness,是专门用于代码微基准测试的工具套件。何谓Micro Benchmark呢?简单的来说就是基于方法层面的基准测试,精度可以达到微秒级。当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用JMH对优化的结果进行量化的分析。JMH比较典型的应用场景有:想准确的知道某个方法需要执行多长时间,以及执行时间和输入之间的相关性;对比...转载 2019-06-01 17:49:46 · 283 阅读 · 0 评论 -
第九章Java8新增的并发笔记
一、原子操作CAS——LongAdderJDK1.8时,java.util.concurrent.atomic包中提供了一个新的原子类:LongAdder。根据Oracle官方文档的介绍,LongAdder在高并发的场景下会比它的前辈——AtomicLong 具有更好的性能,代价是消耗更多的内存空间。AtomicLong是利用了底层的CAS操作来提供并发性的,调用了Unsafe类的getAndA...原创 2019-06-01 17:49:34 · 2381 阅读 · 0 评论 -
第八章JMM和底层实现原理笔记
一、JMM基础与计算机原理Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。Java1.5版本对其进行了重构,现在的Java仍沿用了Java1.5的版本。JMM遇到的问题与现代计算机中遇到的问题是差不多的。物理计算机中的并发问题,物理机遇到的并发问题...原创 2019-06-01 17:49:16 · 640 阅读 · 0 评论 -
第七章、并发编程实战项目
一、并发任务执行框架架构师是什么?在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划的那个人,就是 架构师。一般是一个项目里的最资深的专业技术人员,可以说架构师首先一定是个Java高级开发人员。主要职责主要是架构设计、软件开发,具体来说包括1、确认需求在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说...原创 2019-06-01 17:48:54 · 1357 阅读 · 7 评论 -
第六章 并发安全笔记
什么是线程安全性?在《Java并发编程实战》中,定义如下:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在调用代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。一、线程封闭实现好的并发是一件困难的事情,所以很多时候我们都想躲避并发。避免并发最简单的方法就是线程封闭。什么是线程封闭呢?就是把对象封装到一个线程里,...原创 2019-06-01 17:48:40 · 1386 阅读 · 1 评论 -
第五章 线程池ThreadPool笔记
一、线程池介绍在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多。那么...原创 2019-06-01 17:48:29 · 482 阅读 · 0 评论 -
第四章 并发容器ConcurrentHashMap笔记
HashMap多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为空,就会产生死循环获取Entry。HashTable使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法,其他线程也访问HashTable的同步方法时,会进入阻塞或轮询状...原创 2019-06-01 17:48:12 · 803 阅读 · 0 评论 -
第三章 显式锁和AQS笔记
谈到并发不得不谈ReentrantLock,而谈到ReentrantLock不得不谈AbstractQueuedSynchronizer(AQS)。类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch。它维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。这里volatile是核心关键词,具体vo原创 2019-06-01 17:47:54 · 280 阅读 · 0 评论 -
第二章 线程的并发工具类笔记
一、 Fork/Join框架的介绍Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+10...原创 2019-06-01 17:47:04 · 243 阅读 · 0 评论 -
第一章 线程基础、线程之间的共享和协作笔记
一、基础概念1. 什么是进程和线程进程是程序运行资源分配的最小单位进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、磁盘IO等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启...翻译 2019-06-01 17:46:47 · 1189 阅读 · 0 评论