一步步学习多线程
一步步学习多线程
专业的程序员
十五年开发经验,10年互联网老兵,曾担任旺旺集团核心开发课副课长兼架构师,在多家互联网企业中担任架构师、开发组长等职位。常年奋战在微服务、高并发、低代码一线,喜欢钻研技术,喜欢分享经验
展开
-
一步步学习多线程(一) 重要概念
几个重要的概念 1、同步(synchronous)和 异步(asynchronous) 2、并发(Concurrency)和 并行(Parallelism) 3、临界区 4、阻塞(Blocking)和非阻塞(Non-Blockings) 5、死锁(DeadLock)、饥饿(Starvation)和活锁(LiveLock) 6、并行的级别 1、同步和异步 对方法调用而言...原创 2018-05-22 16:25:38 · 2091 阅读 · 0 评论 -
一步步学习多线程(二) 多线程基础1(线程基本操作)
什么是线程?线程的基本操作1、什么是线程线程是进程内的执行单元,在JAVA当中建立的线程会映射到操作系统中去。在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体2、线程的基本操作3、线程的基本操作新建线程:Thread t1 = new Thread(); t1.start();注:如果是t1.run() 则不会新开一个线程,而且在原有线程中...原创 2018-05-23 14:22:21 · 853 阅读 · 0 评论 -
一步步学习多线程(三) 多线程基础2(守护线程、优先级)
守护线程在后台默默地完成一些系统性的服务,比如垃圾回收线程,JIT线程就可以理解为守护线程当一个Java应用内,只有守护线程时,Java虚拟机就会自然退出。例子:public class DeaonDemo { public static class DaemonT extends Thread { @Override public void run() { while(true){ ...原创 2018-05-23 14:35:45 · 830 阅读 · 0 评论 -
一步步学习多线程(四) 多线程基础3(线程同步操作)
2原创 2018-05-23 15:59:34 · 795 阅读 · 0 评论 -
一步步学习多线程(五) JVM与线程安全
在Java中,所有实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享(本章用“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local Variables),方法定义参数(Java语言规范称之为Formal Method Parameters)和异常处理器参数(ExceptionHandler Parameters)不会在线程之间共享,它们不会有内存可见性问题,也不受内存...原创 2018-07-12 11:47:47 · 1541 阅读 · 0 评论 -
一步步学习多线程(六) 无锁(CAS及无锁类)
无锁:无障碍的运行。 CAS:它包含3个参数CAS(V,E,N),V表示要更新的变量,E表示预期值,N表示新值。仅当V值等于E值时,才会将V的值设为N。如果V值和E值不同,则说明已经有其他线程做了更新,则当前线程什么都不做。最后,CAS返回当前V的真实值。CAS是乐观态度的,它总是认为自己可以成功完成操作。当多个线程同时使用CAS操作一个变量时,只有一个会胜出,并成功更新。失败的线程不会被挂起,...原创 2018-07-24 15:18:04 · 1835 阅读 · 0 评论 -
一步步学习多线程(七) ReentrantLock
ReentrantLock是一个锁,相对于synchronized, 这个锁更灵活,可以灵活的加锁和解锁。 我们先看一个例子 public class ReenterLock implements Runnable { public static ReentrantLock lock = new ReentrantLock(); public static int count ...原创 2018-09-12 16:09:19 · 2043 阅读 · 0 评论 -
一步步学习多线程(八) CountDownLatch
CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如火箭发射需要检查很多步,例如10步,每一步都要检查完毕才能发射,这样就可以使用CountDownLatch类来进行。 构造函数:public CountDownLatch(int count) { }; //参数count为计数值 主要方法: 1、await() 当前线程等...原创 2019-01-29 10:49:06 · 2034 阅读 · 0 评论 -
一步步学习多线程(九) CyclicBarrier
CyclicBarrier位于java.util.concurrent包下,可以叫它回环栅栏,我们可以简单的理解为可以无限次重置的计数器。 构造函数: 1、public CyclicBarrier(int parties, Runnable barrierAction) 2、public CyclicBarrier(int parties) 参数 parties (the number o...原创 2019-02-12 15:57:56 · 2049 阅读 · 0 评论