Java多线程
文章平均质量分 89
ruan_luqingnian
这个作者很懒,什么都没留下…
展开
-
java阻塞队列BlockingQueue讲解---生产者消费者模型
java阻塞队列BlockingQueue阻塞队列BlockingQueue前言认识BlockingQueueBlockingQueue的核心方法:常见BlockingQueueArrayBlockingQueueLinkedBlockingQueueDelayQueuePriorityBlockingQueueSynchronousQueue小结阻塞队列BlockingQueue前言在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过原创 2021-09-25 18:06:27 · 460 阅读 · 0 评论 -
jvm与并发
jvm与并发jvm与并发1.jvm内存模型2.先行发生原则 happens-before3.指令重排序jvm与并发1.jvm内存模型硬件内存模型处理器—>高速缓存—>缓存一致性协议—>主存java内存模型线程<---->工作内存<---->save和load<---->内存java内存间的交互操作(1)lock(锁定):作用于主内存的变量,把一个变量标记为一条线程独占状态(2)unlock(解锁):作用于主原创 2021-07-08 15:16:50 · 215 阅读 · 0 评论 -
Java线程池及Executor框架
Java线程池及Executor框架Java线程池及Executor框架1.为什么要使用线程池?2.创建线程池及其使用3.Future与Callable、FutureTask4.线程池的核心组成部分及其运行机制5.线程池拒绝策略6.Executor框架7.线程池的使用建议Java线程池及Executor框架1.为什么要使用线程池?诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过原创 2021-07-08 13:31:30 · 97 阅读 · 0 评论 -
Java多线程—常用并发工具类
java多线程—常用并发工具类java多线程—常用并发工具类CountDownLatchCyclicBarrierReadWriteLockSemaphoreExchangerjava多线程—常用并发工具类CountDownLatchCountDownLatch倒计时锁存器CountDownLatch countDownLatch = new CountDownLatch(3);await(),进入等待的状态countDown(),计数器减一应用场景:启动三个线程计原创 2021-07-06 21:15:18 · 1314 阅读 · 1 评论 -
Java原子类
Java原子类Java原子类什么是原子类为什么要有原子类java8新增原子类原子更新基本类型原子更新数组类型原子更新属性原子更新引用Java原子类什么是原子类一度认为原子是不可分割的最小单位,故原子类可以认为其操作都是不可分割为什么要有原子类对多线程访问同一个变量,我们需要加锁,而锁是比较消耗性能的,JDk1.5之后,新增的原子操作类提供了一种用法简单、性能高效、线程安全地更新一个变量的方式,这些类同样位于JUC包下的atomic包下,发展到JDk1.8,该包下共有17个类,囊括了原子更新基原创 2021-07-04 14:27:38 · 114 阅读 · 2 评论 -
Java线程通信—管道流、join、ThreadLocal、Condition的使用
Java线程通信—管道流、join、ThreadLocal、Condition的使用Java线程通信—管道流、join、ThreadLocal、Condition的使用wait、notify、notifyAll何时使用wait和sleep的区别注意点notify跟notifyAll的区别等待通知经典模型之生产者消费者代码实现使用管道流进行通信代码实现Thread.join通信代码实现ThreadLocal的使用代码实现Java线程通信—管道流、join、ThreadLocal、Condition的使用w原创 2021-07-04 11:50:10 · 84 阅读 · 0 评论 -
Java线程通信问题
Java线程通信问题Java线程通信问题场景代码结果展示代码出现问题解决数据错乱问题利用同步代码块解决问题利用同步方法解决问题解决交替输出问题原理代码原理线程完整的生命周期图使用Lock锁的情景Java线程通信问题场景应用场景:生产者和消费者问题假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库,消费者将仓库中产品取走消费如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止如果仓库中放有产品,则消费者可以将产品取走消费,否则停止消费并等待,原创 2021-07-03 14:36:21 · 103 阅读 · 1 评论 -
Java处理线程安全问题
Java处理线程安全问题Java处理线程安全问题方法1:同步代码块同步代码块演示1同步代码块演示2同步监视器总结方法2:同步方法代码演示总结方法3:Lock锁Lock锁引入代码演示Lock和synchronized的区别优先使用顺序线程同步的优缺点对比:可能造成死锁代码演示Java处理线程安全问题方法1:同步代码块同步代码块演示1public class BuyTicketThread implements Runnable { int ticketNum = 10; @Overri原创 2021-07-02 15:52:45 · 122 阅读 · 0 评论 -
java多线程并发编程—“锁“
文章目录java多线程并发编程—"锁"锁的分类深入理解Lock接口Lock的使用Lock与synchronized的区别实现了lock接口的锁各个方法的简介实现属于自己的锁AbstractQueuedSynchronizer浅析java多线程并发编程—“锁”锁的分类自旋锁线程状态及上下文切换消耗系统资源,当访问共享资源的时间短,频繁的上下文切换不值得。jvm实现,使线程在没有获得锁的时候,不被挂起,转而执行空循环,循环几次后,如果还没有获得锁,则被挂起。阻塞锁阻塞锁改变了线程的运行状态原创 2021-06-30 19:59:04 · 132 阅读 · 1 评论 -
java线程安全问题
java线程安全问题java线程安全问题线程安全性什么是线程安全什么是线程不安全从字节码角度剖析线程不安全操作原子性操作什么是原子性操作深入理解synchronized内置锁互斥锁volatile关键字及其使用场景使用场景单例与线程安全如何避免线程安全性问题线程安全性问题成因如何避免java线程安全问题线程安全性什么是线程安全当多个线程访问某个类,不管运行时环境采用何种调度方式或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类为线程安全原创 2021-06-28 17:49:38 · 92 阅读 · 0 评论 -
java多线程之线程基础
线程基础线程基础进程与线程的区别进程线程二者关系线程的状态及其相互转换现成的几种状态相互转化创建线程的方式1.继承Thread,并重写父类的run方法2.实现Runable接口,并实现run方法3.使用匿名内部类4.Lambda表达式线程池创建线程的挂起和恢复什么是挂起线程为什么要挂起线程如何挂起线程被废弃的方法可以使用的方法什么时候时候使用挂起线程线程的中断操作stop() 废弃方法Thread.interrupt方法自行定义一个标志,用来判断是否继续执行线程的优先级线程守护线程的分类作用建议线程基础原创 2021-04-21 19:30:26 · 182 阅读 · 0 评论