多线程
文章平均质量分 94
用代码的方式走进多线程
不二人生
刀光剑影江湖情,摧枯拉朽浪滔滔。功名利禄拂衣去,山高水远路迢迢。一个上得了厅堂下得了厨房、左手写诗右手写词的男人
展开
-
Java多线程系列—多线程的实现方式(01)
多线程的实现方式实现线程是并发编程中基础中的基础,因为我们必须要先实现线程,才可以继续后续的一系列操作。基本实现方式Runablepublic class ImplementRunable implements Runnable { @Override public void run() { while (true) { // 输出线程的名字,与主线程名称相区分 System.out.println(Thread.cur原创 2021-04-30 14:46:11 · 63159 阅读 · 0 评论 -
Java多线程系列—线程的运行机制(02)
线程的运行机制在这一节我们主要学习一下线程的启动,线程的停止以及线程的状态流转线程的启动start 方法和 run 方法这个其实是一个非常老生常谈的问题了,就是说我们只有调用start 方法才会帮我们启动一个线程,如果你是直接调用run 方法的话,那其实就是同步调用。public class StartRight { public static void main(String[] args) { Thread t1 = new Thread(() -> {原创 2021-05-01 18:16:31 · 62952 阅读 · 0 评论 -
Java多线程系列—线程通信机制wait notify notifyAll(03)
线程通信机制wait notify notifyAll本课时我们主要学习 wait/notify/notifyAll 方法的使用注意事项。我们主要从三个问题入手:为什么 wait 方法必须在 synchronized 保护的同步代码中使用?为什么 wait/notify/notifyAll 被定义在 Object 类中,而 sleep 定义在 Thread 类中?wait/notify 和 sleep 方法的异同?wait 必须在 synchronized 保护的同步代码中使用为什么wai原创 2021-05-02 12:25:28 · 62760 阅读 · 0 评论 -
Java多线程系列—生产者消费者模式的多种实现(04)
生产者消费者模式我们先来看看什么是生产者消费者模式,生产者消费者模式是程序设计中非常常见的一种设计模式,被广泛运用在解耦、消息队列等场景。在现实世界中,我们把生产商品的一方称为生产者,把消费商品的一方称为消费者,有时生产者的生产速度特别快,但消费者的消费速度跟不上,俗称“产能过剩”,又或是多个生产者对应多个消费者时,大家可能会手忙脚乱。如何才能让大家更好地配合呢?这时在生产者和消费者之间就需要一个中介来进行调度,于是便诞生了生产者消费者模式。使用生产者消费者模式通常需要在两者之间增加一个阻塞队列作为原创 2021-05-02 12:26:27 · 63170 阅读 · 0 评论 -
Java多线程系列—多线程带来的问题(05)
多线程带来的问题为什么需要多线程其实说白了,时代变了,现在的机器都是多核的了,为了榨干机器最后的性能我们引入单线程。为了充分利用CPU资源,为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰,为了处理大量的IO操作时或处理的情况需要花费大量的时间等等,比如:读写文件,视频图像的采集,处理,显示,保存等。性能问题上下文切换Java 中的线程与 CPU 单核执行是一对一的,即单个处理器同一时间只能处理一个线程的执行;而 CPU 是通过时间片算法来执行任务的,不同的线程活跃状态不同原创 2021-05-05 14:08:38 · 62854 阅读 · 1 评论 -
Java多线程系列—线程安全问题(06)
线程安全问题什么是线程安全要想弄清楚线程安全问题,首先需要了解什么是线程安全,线程安全经常在工作中被提到,比如:你的对象不是线程安全的,你的线程发生了安全错误,虽然线程安全经常被提到,但我们可能对线程安全并没有一个明确的定义。《Java Concurrency In Practice》的作者 Brian Goetz 对线程安全是这样理解的,当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行问题,也不需要进行额外的同步,而调用这个对象的行为都可以获得正确的结果,那这个对象便是线原创 2021-05-05 14:09:35 · 62537 阅读 · 1 评论 -
Java多线程系列—final的各种用法与意义(07)
finalfinal 是 Java 中的一个关键字,简而言之,final 的作用意味着“这是无法改变的”。不过由于 final 关键字一共有三种用法,它可以用来修饰变量、方法或者类,而且在修饰不同的地方时,效果、含义和侧重点也会有所不同,所以我们需要把这三种情况分开介绍。final 修饰变量关键字 final 修饰变量的作用是很明确的,那就是意味着这个变量一旦被赋值就不能被修改了,也就是说只能被赋值一次,直到天涯海角也不会“变心”。如果我们尝试对一个已经赋值过 final 的变量再次赋值,就会报编译原创 2021-06-16 18:20:39 · 61576 阅读 · 1 评论 -
Java 线程池初识
文章目录线程池的优势降低资源消耗提升系统响应速度提高线程的可管理性线程池的工作原理任务提交流程图任务提交的流程代码任务的提交方法线程池的关闭线程池创建线程池的参数(7 个)handler 处理策略AbortPolicy策略CallerRunsPolicy策略DiscardOleddestPolicy策略DiscardPolicy策略线程池的参数设计corePoolSizeBlockingQueueThreadPoolExecutor 的意义FixedThreadPoolSingleThreadExecuto原创 2021-04-12 17:50:37 · 63604 阅读 · 0 评论