随笔分类 -  concurrency programming

java 并发编程的艺术
摘要:一、手动创建并开启了一个线程 此时主程序会继续向下执行,不会停在这里,如果主程序执行完成而开启的线程还没有执行完成,则会等待线程执行完毕,最终程序结束运行 若想主程序结束,子程序立即结束,可以在线程开启之前设置其为守护线程 二、使用线程池提交了任务 此时主程序会继续向下执行,不会停在这里,如果主程序 阅读全文
posted @ 2020-09-17 08:56 helloworldmybokeyuan 阅读(268) 评论(0) 推荐(0)
摘要:1.0多线程抽取邮件 2.0 阅读全文
posted @ 2019-10-29 10:28 helloworldmybokeyuan 阅读(204) 评论(0) 推荐(0)
摘要:Java的线程既是工作单元,也是执行机制。从jdk5开始,把工作单元与执行机制分离开来。工作单元包括Runnable和Callable,执行机制由Executor来提供 10.1Executor框架简介 10.1.1Executor框架的两级调度模型 在上层,Java多线程程序通常把应用分解为若干任 阅读全文
posted @ 2019-10-28 18:20 helloworldmybokeyuan 阅读(123) 评论(0) 推荐(0)
摘要:Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或者并发执行的程序都可以使用线程池。在开发过程中,合理使用线程池能够带来3个好处。 第一:降低资源消耗 第二:提高响应速度 第三:提高线程的可管理性 9.1 线程池的实现原理 线程池的主要处理流程,处理流程图如图9-1所示 1)线程池判断核 阅读全文
posted @ 2019-10-28 17:34 helloworldmybokeyuan 阅读(154) 评论(0) 推荐(0)
摘要:在JDK的并发包里提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段。 8.1等待多线程完成的CountDownLatch CountDownLat 阅读全文
posted @ 2019-10-28 16:56 helloworldmybokeyuan 阅读(235) 评论(0) 推荐(0)
摘要:原子操作类是多线程更新变量的一种用法简单、性能高效的方式,在Atomic包里一共提供了13个类,属于4种类型的原子更新方式,分别是原子更新基本类型、原子更新引用和源自更新属性。Atomic包里的类基本上都是用Unsafe实现的包装类。 7.1原子更新基本类型 AtomicBoolean 略 Atom 阅读全文
posted @ 2019-10-28 15:52 helloworldmybokeyuan 阅读(138) 评论(0) 推荐(0)
摘要:6.1 ConcurrentHashMap 略(请查看已有的其它笔记) 6.2 ConcurrentLinkedQueue 在并发编程中,有时候需要使用线程安全的队列。如果要实现一个线程安全的队列有两种方式:一种是使用阻塞算法,另一种是使用非阻塞算法。 使用阻塞算法的队列可以用一个锁(入队和出队用同 阅读全文
posted @ 2019-10-28 15:36 helloworldmybokeyuan 阅读(149) 评论(0) 推荐(0)
摘要:本章将介绍Java并发包中与锁相关的API和组件,以及这些API和组件的使用方式和实现细节、 锁是面向使用者的,它定义了使用者与锁交互的接口(比如可以允许两个线程并行访问),隐藏了实现细节; 同步器面向的是锁的实现者,它简化了锁的实现方式,屏蔽了同步状态管理、线程的排队、等待与唤醒等底层操作。锁和同 阅读全文
posted @ 2019-10-28 10:48 helloworldmybokeyuan 阅读(234) 评论(0) 推荐(0)
摘要:本章将着重介绍Java并发编程的基础知识,从启动一个线程到线程间不同的通信方式,最后通过简单的线程池示例以及应用(简单的Web服务器)来串联本章所介绍的内容。 4.1线程简介 4.1.1什么是线程 现代操作系统调度的最小单元 4.1.2为什么要使用线程 更多的处理器核心 更快的响应速度 更好的编程模 阅读全文
posted @ 2019-10-25 13:22 helloworldmybokeyuan 阅读(204) 评论(0) 推荐(0)
摘要:Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员,本章将解开Java内存模型的面纱。大致分为4个部分: Java内存模型的基础,主要介绍内存模型相关的基本概念 Java内存模型的顺序一致性,主要介绍重排序与顺序一致性内存模型 同步原语,主要介绍3个同步原语(synchr 阅读全文
posted @ 2019-10-24 15:23 helloworldmybokeyuan 阅读(233) 评论(0) 推荐(0)
摘要:Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。 2.1 volatile 的应用 在多线程并发编程中synchronized和volatile都扮演着重要的 阅读全文
posted @ 2019-10-22 17:53 helloworldmybokeyuan 阅读(251) 评论(0) 推荐(0)
摘要:并发编程的目的是为了让程序运行的更快,但是并不是启动更多的线程就能让程序最大限度的并发执行。会面临非常多的挑战,比如上下文切换的问题、死锁的问题,以及软件硬件资源的问题等。 1.1 上下文切换 即使是单核处理器也支持多线程执行代码,CPU通过分配CPU时间片来实现这个机制。时间片是CPU分配给各个线 阅读全文
posted @ 2019-10-22 17:39 helloworldmybokeyuan 阅读(157) 评论(0) 推荐(0)
摘要:之前看过Java并发编程的艺术电子版,但感觉还需要再仔细了解以下,于是又买了实体书,正好现在有时间可以好好学习一下Java 的并发编程。 首先我们来看一下这本每一章大体上在讲什么。 第1章 介绍Java并发编程的挑战,主要讲述进入并发编程的世界可能会遇到的问题,以及如何解决 第2章 介绍Java并发 阅读全文
posted @ 2019-10-22 16:05 helloworldmybokeyuan 阅读(352) 评论(0) 推荐(0)