多线程与并发
文章平均质量分 92
小幸运安然
这个作者很懒,什么都没留下…
展开
-
并发编程:(七)线程池
一、自定义线程池1、图解2、自定义任务队列import java.util.ArrayDeque;import java.util.Deque;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.ReentrantLock;/** * 自定义任务队列 */public class BlockingQueue原创 2020-09-01 11:16:26 · 406 阅读 · 1 评论 -
并发编程:(六)共享模型之不可变
###一、日期转换的问题由于 SimpleDateFormat 不是线程安全的,有很大几率出现 java.lang.NumberFormatException 或者出现不正确的日期解析结果。public class Test1 { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 0; i原创 2020-08-28 11:27:16 · 206 阅读 · 0 评论 -
并发编程:(五)Volatile与CAS
一、问题引入1、线程不安全实例public interface Account { /** * 获取余额 * @return */ Integer getBalance(); /** * 取款 * @param amount */ void withDraw(Integer amount); /** * 方法内会启动 1000 个线程,每个线程做 -10 元的操作 * 如果初始余额原创 2020-08-02 11:14:52 · 730 阅读 · 0 评论 -
并发编程:(四)共享模型之内存
一、Java内存模型1、前言Monitor 主要关注的是访问共享变量时,保证临界区代码的原子性。2、定义JMM 即 Java Memory Model,它定义了主存(所有线程共享的数据存放位置)、工作内存(每个线程私有的数据存放位置)抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等。JMM 体现在以下几个方面:原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 CPU 缓存的影响有序性 - 保证指令不会受 CPU 指令并行优化的影响3、可原创 2020-07-23 17:51:14 · 335 阅读 · 0 评论 -
并发编程:(三)共享模型之管程
一、共享问题1、共享带来的问题多线程的环境下,由于多个公共资源可能会被多个线程共享,也就是多个线程可能会操作(增、删、改等)同一资源。当多个线程操作同一资源时,很容易导致数据错乱,或发生数据安全问题(数据有可能丢失,有可能增加,有可能错乱)。2、Java的体现两个线程对初始值为 0 的静态变量一个做自增,一个自减,各做5000次public class Test11 { static int count = 0; public static void main(String[] a原创 2020-07-09 16:00:41 · 542 阅读 · 0 评论 -
并发编程:(二)线程基本概念
一、进程与线程1、进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载到 CPU,数据加载到内存。在指令运行过程中还需要用到磁盘、网络等设备。进程是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如:记事本、画图、浏览器等),也有程序只能启动一个实例进程(例如:网易云音乐、360安全卫士等)。2、线程一个进程之内可以分为一到多个线程。一个原创 2020-06-17 14:19:10 · 961 阅读 · 1 评论 -
并发编程:(一)概述
前言并发编程的目的是让程序运行更快,但是使用并发并不定会使得程序运行更快,只有当程序的并发数量达到一定的量级的时候才能体现并发编程的优势。所以谈并发编程在高并发量的时候才有意义。虽然目前还没有开发过高并发量的程序,但是学习并发是为了更好理解一些分布式架构。那么当程序的并发量不高,比如是单线程的程序,单线程的执行效率反而比多线程更高。这又是为什么呢?熟悉操作系统的应该知道,CPU是通过给每个线程分配时间片的方式实现多线程的。这样,当CPU从一个任务切换到另一个任务的时候,会保存上一个任务的状态,当执行完这个原创 2020-06-17 14:14:47 · 435 阅读 · 0 评论