随笔分类 -  并发编程

Java多线程,并发编程
摘要:前言 多线程在面试中基本上已经是必问项了,面试官通常会从简单的问题开始发问,然后再一步一步的挖掘你的知识面。 比如,从线程是什么开始,线程和进程的区别,创建线程有几种方式,线程有几种状态,等等。 接下来自然就会引出线程池,Lock,Synchronized,JUC的各种并发包。然后就会引出 AQS、 阅读全文
posted @ 2020-10-24 13:47 烟雨星空 阅读(808) 评论(2) 推荐(2) 编辑
摘要:在 JUC 下包含了一些常用的同步工具类,今天就来详细介绍一下,CountDownLatch,CyclicBarrier,Semaphore 的使用方法以及它们之间的区别。 一、CountDownLatch 先看一下,CountDownLatch 源码的官方介绍。 意思是,它是一个同步辅助器,允许一 阅读全文
posted @ 2020-03-06 17:58 烟雨星空 阅读(785) 评论(0) 推荐(0) 编辑
摘要:为什么要使用阻塞队列 之前,介绍了一下 ThreadPoolExecutor 的各参数的含义( "并发编程之线程池ThreadPoolExecutor" ),其中有一个 BlockingQueue,它是一个阻塞队列。那么,小伙伴们有没有想过,为什么此处的线程池要用阻塞队列呢? 我们知道队列是先进先出 阅读全文
posted @ 2020-03-04 23:30 烟雨星空 阅读(2506) 评论(0) 推荐(2) 编辑
摘要:本文章将要介绍的内容有以下几点,读者朋友也可先自行思考一下相关问题: 1. 线程中断 interrupt 方法怎么理解,意思就是线程中断了吗?那当前线程还能继续执行吗? 2. 判断线程是否中断的方法有几个,它们之间有什么区别? 3. LockSupport的 park/unpark 和 wait/n 阅读全文
posted @ 2020-03-01 22:45 烟雨星空 阅读(899) 评论(0) 推荐(0) 编辑
摘要:线程的五种状态 线程从创建到销毁一般分为五种状态,如下图: 1) 新建 当用new关键字创建一个线程时,就是新建状态。 2) 就绪 调用了 start 方法之后,线程就进入了就绪阶段。此时,线程不会立即执行run方法,需要等待获取CPU资源。 3) 运行 当线程获得CPU时间片后,就会进入运行状态, 阅读全文
posted @ 2020-02-29 22:39 烟雨星空 阅读(902) 评论(0) 推荐(0) 编辑
摘要:前言 在我们平时自己写线程的测试demo时,一般都是用new Thread的方式来创建线程。但是,我们知道创建线程对象,就会在内存中开辟空间,而线程中的任务执行完毕之后,就会销毁。 单个线程的话还好,如果线程的并发数量上来之后,就会频繁的创建和销毁对象。这样,势必会消耗大量的系统资源,进而影响执行效 阅读全文
posted @ 2020-02-27 23:15 烟雨星空 阅读(745) 评论(0) 推荐(1) 编辑
摘要:不知道你是否遇到过面试官让你手写生产者消费者代码。别说,前段时间有小伙伴还真的遇到了这种情况。当时是一脸懵逼。 但是,俗话说,从哪里跌倒就要从哪里爬起来。既然这次被问到了,那就回去好好研究一下,争取下一次不再被虐呗。 于是,今天我决定手敲一个生产者消费者模式压压惊。(因为我也不想以后被面试官血虐啊) 阅读全文
posted @ 2020-02-25 23:18 烟雨星空 阅读(2784) 评论(3) 推荐(5) 编辑
摘要:我们知道多线程可以实现同时执行多个任务(只是看起来是同时,其实是CPU的时间片切换特别快我们没感觉而已)。 现在假设一个做饭的场景,你没有厨具也没有食材。你可以去网上买一个厨具,但是这段时间,你不需要闲着啊,可以同时去超市买食材。 设想这是两个线程,主线程去买食材,然后开启一个子线程去买厨具。但是, 阅读全文
posted @ 2020-02-23 21:15 烟雨星空 阅读(913) 评论(0) 推荐(0) 编辑
摘要:我们知道,单个线程计算是串行的,只有等上一个任务结束之后,才能执行下一个任务,所以执行效率是比较低的。 那么,如果用多线程执行任务,就可以在单位时间内执行更多的任务,而Master Worker就是多线程并行计算的一种实现方式。 它的思想是,启动两个进程协同工作:Master和Worker进程。 M 阅读全文
posted @ 2020-02-21 14:04 烟雨星空 阅读(788) 评论(4) 推荐(0) 编辑

点击右上角即可分享
微信分享提示