
Java多线程
mu6y
这个作者很懒,什么都没留下…
展开
-
Java多线程 Future与Callable
概述Runnable的缺陷Callable接口Future类用法1:线程池的submid方法返回Future对象用法2:用FutureTask来创建FutureFuture注意点Runnable的缺陷没有返回值无法抛出check exception。为什么有这样的缺陷:Callable接口类似于Runnable,被其他线程执行的任务,重写call()方法。返回一个反...原创 2020-04-19 21:21:29 · 311 阅读 · 0 评论 -
Java多线程 控制并发流程
控制并发流程什么是控制并发流程?CountDownLatch倒计时门闩Semaphore信号量Condition接口CyclicBarrier循环栅栏CountDownLatch倒计时门闩CountDownLatch类的作用并发流程控制的工具倒数门闩倒数结束之前,一直处于等待状态,直到倒计时结束了,此线程才继续工作。方法简介CountDownLatch(int ...原创 2020-04-18 14:31:15 · 341 阅读 · 0 评论 -
Java 多线程 常见并发队列
Java并发容器并发容器概览ConcurrentHashMap:线程安全的HashMapCopyOnWriteArrayList:线程安全的ListBlockingQueue:这是一个接口,表示阻塞队列,非常适合用作数据共享的通道ConcurrentLinkedQueue:高效的非阻塞并发队列,使用链表实现。可以看做一个线程安全的LinkedList。集合类的历史Vector和H...原创 2020-04-17 14:41:53 · 278 阅读 · 0 评论 -
Java多线程 CAS与原子类Atomic
什么是原子类不可分割一个操作是不可中断的作用和锁类似,是为了保证并发情况下的线程安全,不过原子类相比于锁,有一定的优势。粒度更细:原子变量可以把竞争范围缩小到变量级别,这是我们可以获得最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度效率更高,通常,使用原子类的效率比使用锁的效率更高。6类原子类总览基本类型原子类AtomicIntegerAtomicLongAto...原创 2020-04-15 15:29:10 · 150 阅读 · 0 评论 -
Java 多线程 锁
锁锁是一种工具,用于控制对共享资源的访问。Lock与synchronized为什么需要Locksynchronized效率低:锁的释放情况少,试图获得锁时不能设定超时,不能中断一个正在试图获得锁的线程。synchronized不够灵活:加锁的释放的实际单一,每个锁仅有单一的条件,可能是不够的。synchronized无法知道是否成功获取到锁。lock(),tryLock(),tr...原创 2020-04-06 17:22:59 · 279 阅读 · 0 评论 -
Java多线程 死锁问题
死锁考考你写一个必然死锁的例子发生死锁必须满足哪些条件?如何定位死锁?有哪些解决死锁问题的策略?经典的哲学家就餐问题实际工作中如何避免死锁什么是活跃性问题?活锁,饥饿和死锁有什么区别死锁是什么发生在并发中互不相让:当两个或更多线程相互持有对方所需要的资源,有不主动释放,导致所有人都无法继续前进,导致程序陷入无尽的阻塞,这就是死锁。多个线程也可以造成死锁,当多个线程形成环...原创 2020-03-30 12:50:10 · 241 阅读 · 0 评论 -
Java多线程 Java内存模型
Java 内存模型从Java代码到CPU指令的变化过程在Java代码中,使用的控制并发手段例如synchronized关键字,最终也是要转化为CPU指令来生效的,我们来回顾以下Java代码到最终执行的CPU指令的流程最开始,我们编写Java代码,是*.java文件在编译(javac命令)后,从刚才的*.java文件会变出一个新的Java字节码文件(*.class)JVM会执行刚才生成的...原创 2020-03-29 17:51:16 · 175 阅读 · 0 评论 -
Java多线程 synchronized底层原理
synchronized底层实现本文转载 https://github.com/farmerjohngit/myblog/issues/12synchronized简介Java中提供了两种实现同步的基础语义:synchronized方法和synchronized块,public class SynTest{ public void syncBlock(){ sync...转载 2020-03-27 23:43:19 · 298 阅读 · 0 评论 -
Java多线程 并发安全问题简介
并发安全问题一共由哪几类线程安全问题哪些场景需要额外注意线程安全问题什么是多线程的上下文切换线程安全问题当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。什么情况下会出现线程安全问题运行结果错误:a++问题活跃性问题:死锁,...原创 2020-03-27 16:55:16 · 180 阅读 · 0 评论 -
Java多线程 线程的属性
线程的属性什么时候我们需要设置守护线程?我们应该如何应用优先级来帮助程序运行?不同的操作系统如何处理优先级问题?线程各属性纵览属性名称用途编号(ID)每个线程有自己的ID,用于标识不同的线程名称(Name)作用让程序员或用户再开发、调试或运行过程中,更容易区分每个不同线程、定位问题等。是否是守护线程(isDaemon)true代表该线程是守护线程...原创 2020-03-26 22:15:28 · 151 阅读 · 0 评论 -
java多线程 sleep方法与join方法
Sleep方法相关wait与sleep方法的异同相同点:wait和sleep方法都可以使线程阻塞,对应线程状态时Waiting或Timed waiting。wait和sleep方法都可以使用中断Thread.interrupt().不同点wait方法的执行不许再同步方法块中进行,而sleep不需要再同步方法块中使用sleep方法时,不会释放monitor锁,但是wait方法会释...原创 2020-03-26 21:36:58 · 396 阅读 · 0 评论 -
Java多线程 wait(),notify(),notifyAll()
多线程中的常见方法面试中的常见问题为什么线程通信的方法wait(),notify(),和notifyAll()被定义在Object类中,sleep定义在Thread类里?用3种方法实现生产者模式JavaSE8和Java1.8和JDK8是什么关系,是同一个东西吗?join,sleep和wait期间线程的状态分别是什么,为什么?Thread与Object中与多线程常见的方法Thre...原创 2020-03-26 14:56:46 · 176 阅读 · 0 评论 -
java多线程 synchronized关键字
synchronized课程主要内容synchronized简介:作用、地位、不控制并发的后果两种用法:对象锁和类锁多线程访问同步方法的7种情况,是否是static,synchronized方法等。synchronized的性质:可重入、不可中断原理:加解锁原理,可重入原理、可见性原理synchronized的缺陷:效率低,不够灵活,无法预判是否成功获取到锁。常见面试问题:使用注...原创 2020-03-26 09:44:28 · 115 阅读 · 0 评论 -
Java 多线程 线程的在Java中的生命周期
线程的生命周期线程的一生–6个状态(Java)newrunnableblockedwaitingtimed waitingterminatednew状态当Thread类的对象被创建出来,还没有执行start()方法时,此时处于new状态。runnable状态对象一旦调用start()方法,线程进入runnable状态。该状态对应操作系统中的两种状态,ready和runni...原创 2020-03-25 17:27:27 · 169 阅读 · 0 评论 -
java多线程 线程的启动和停止
线程的启动和停止简介线程的启动方法一 实现Runnable接口,重写run()函数,运行start()方法Runnable run = new Runnable() { @Override public void run() { while(true && !Thread.currentThrea...原创 2020-03-25 12:25:48 · 1765 阅读 · 0 评论