并发编程
菜鸟腾飞
一个正在努力奋斗的95后程序员 , 记录我学习成长的点滴
展开
-
什么是并发编程?
前言并发编程的目的是为了提高程序的执行速度.但是并不意味着启动更多的线程会达到更好的并发效果,并发编程还会引起死锁 , 上下文频繁切换 , 线程不安全等问题.该问题主要介绍几种并发引来的问题及解决方案 一.上下文切换 1.1什么是上下文切换? 无论是单核还是多核cpu都是支持多线程执行代码的,cpu通过给每一个线程分配时间片,只有拿到时间片的线程才可以执行,通常时间片很短只有几十ms,让我们感觉是...原创 2019-07-14 11:26:04 · 3963 阅读 · 0 评论 -
并发编程Master-Worker模式
简介 Master-Worker模式是常用的并行设计模式。它的核心思想是,系统有两个进程协议工作:Master进程和Worker进程。Master进程负责接收和分配任务,Worker进程负责处理子任务。当各个Worker进程将子任务处理完后,将结果返回给Master进程,由Master进行归纳和汇总,从而得到系统结果。处理过程如下图: Master-Worker模式的好处是,它能将大任务...转载 2019-05-19 17:59:47 · 282 阅读 · 0 评论 -
java并发编程:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有...转载 2019-01-04 15:35:19 · 198 阅读 · 0 评论 -
[java]AtomicLong介绍
1.AtomicLong介绍和函数列表 // 构造函数 AtomicLong() // 创建值为initialValue的AtomicLong对象 AtomicLong(long initialValue) // 以原子方式设置当前值为newValue。 final void set(long newValue) // 获取当前值 final long get() // 以原子方式将当前值减 ...原创 2019-01-02 12:44:00 · 2478 阅读 · 0 评论 -
[java]Executors和ThreadPoolExecutor分析
1.Java通过Executors提供四种线程池,分别为: 1)newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 2)newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 3)newScheduledThreadPool 创建一个定长线程池,支持定时及周期性...原创 2018-12-31 17:19:33 · 1274 阅读 · 0 评论 -
[java]多线程顺序打印
package com.dongshuo.test.multithread; import javafx.beans.binding.ObjectExpression; /** * @author :dongshuo * @date : 2018/11/18 18:33 * @desc : 3个线程交替打印 */ public class 多线程交替打印 { public st...原创 2018-11-18 19:16:11 · 671 阅读 · 0 评论 -
[java]lock锁介绍
以下是本文目录大纲: 一.synchronized的缺陷 二.java.util.concurrent.locks包下常用的类 三.锁的相关概念介绍 若有不正之处请多多谅解,并欢迎批评指正。 请尊重作者劳动成果,转载请标明原文链接:   http://www.cnblogs.com/dolphin0520/p/3923167.html 一.synchroniz...转载 2018-12-26 22:15:16 · 3867 阅读 · 0 评论