2020年3月29日

先行发生原则Happens-before

摘要: 先行发生原则Happens-before int k = 1; //男人 int j = k; //女人 先行发生原则是Java内存模型中定义的两项操作之间的偏序关系,如果操作A先行发生于操作B,其实就是说在发生操作B之前,操作A所产生的影响能够被B观察到 简单来说:执行顺序的控制,后续代码可以监控 阅读全文

posted @ 2020-03-29 18:58 趁你还在 阅读(109) 评论(0) 推荐(0) 编辑

指令重排序

摘要: 什么是指令重排序 指令重排的分类:编译期重排序和运行时重排序在JVM编译时期或者CPU执行JVM字节码时期,对现有的指令进行重排序,主要目的为了优化运行速度(在不程序运行结果的前提下) int a = 3 //1 int b = 5; //2 int c = a + b; //3 虽然说指令重排可以 阅读全文

posted @ 2020-03-29 18:57 趁你还在 阅读(683) 评论(0) 推荐(1) 编辑

并发编程常见面试题

摘要: 1.进程和线程还有协程之间的关系 1.1 进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己独立的地址空间,有自己的堆,上级挂靠单位是操作系统。 操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。 1.2 线程, 阅读全文

posted @ 2020-03-29 18:55 趁你还在 阅读(938) 评论(0) 推荐(0) 编辑

2020年3月26日

CAS无锁机制

摘要: cas无锁机制:CAS:Compare and Swap,即比较再交换。1. Java内存模型:JMM(Java Memory Model) 在内存模型当中定义了一个主内存,所有声明的实例变量都存在于主内存当中,主内存的数据会共享给所有线程,每一个线程有一块工作内存,工作内存当中主内存数据的副本当更 阅读全文

posted @ 2020-03-26 12:42 趁你还在 阅读(232) 评论(0) 推荐(0) 编辑

2020年3月25日

锁机制

摘要: 1.锁是干什么用的 锁一般来说用作资源控制,限制资源访问,防止在并发环境下造成数据错误 2.重入锁 重入锁也叫作递归锁,指的是同一个线程外层函数获取到一把锁后,内层函数同样具有这把锁的控制权限 synchronized和ReentrantLock就是重入锁对应的实现 synchronized重量级的 阅读全文

posted @ 2020-03-25 18:33 趁你还在 阅读(222) 评论(0) 推荐(0) 编辑

2020年3月23日

并发队列Queue

摘要: 队列其实就是一个容器 1.同步容器 Vector容器,HashTable容器,都是线程安全 如果同步容器使用foreach迭代过程中修改了元素的值,则会出现ConcurrentModificationException异常 可以使用iterator迭代器解决,但是在多线程并行情况下,修改容器中数据, 阅读全文

posted @ 2020-03-23 20:18 趁你还在 阅读(206) 评论(0) 推荐(0) 编辑

Callable的Future模式

摘要: 一.Callable的Future模式 线程实现方式: 1.继承Thread类 2.实现Runnable接口 3.线程池 4.Callable 无论使用继承Thread类还是实现Runnable接口,还是使用线程池都没有办法解决2个问题 1.线程执行没有返回值结果 2.线程执行没有办法抛出异常,只能 阅读全文

posted @ 2020-03-23 20:12 趁你还在 阅读(158) 评论(0) 推荐(0) 编辑

2020年3月19日

线程池

摘要: 类似于一个池子,可以存放/管理线程 1.使用线程池的好处 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 第三:提高线程的可管理性 2.如何使用线程池 2.1线程池分类 线程池顶级类ThreadP 阅读全文

posted @ 2020-03-19 20:57 趁你还在 阅读(99) 评论(0) 推荐(0) 编辑

并发工具类

摘要: 1.并发工具类 1.CountDownLatch:可以实现线程计数,阻塞后续线程 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实 阅读全文

posted @ 2020-03-19 20:50 趁你还在 阅读(165) 评论(0) 推荐(0) 编辑

2020年3月18日

并发编程专题

摘要: 串行和并行: 串行:一个线程在处理操作 并行:多个线程在处理同一个操作 什么叫做并发编程:在多线程环境下,应用程序的执行 并发编程的目的:充分运用到资源,提高程序的效率 什么情况下用到并发编程: 1.在线程阻塞时,导致应用程序停止 2.处理任务时间过长时,可以创建子任务,来进行分段处理 3.间断任务 阅读全文

posted @ 2020-03-18 20:01 趁你还在 阅读(133) 评论(0) 推荐(0) 编辑

导航