随笔分类 - 并发编程系列
摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 在JDK1.7中引入了一种新的Fork/Join线程池,它可以将一个大的任务拆分成多个小的任务并行执行并汇总执行结果。 Fork/Join采用的是分而治之的基本思想,分而治之就是将一个复杂的任务,按照规定的阈值划分成多个简单的小任务,然后将这些小任务
阅读全文

摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 Runnable 在创建线程时,可以通过new Thread(Runnable)方式,将任务代码封装在Runnable的run()方法中,将Runnable作为任务提交给Thread,或者使用线程池的execute(Runnable)方法处理。 pu
阅读全文

摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 队列 学过数据结构的同学应该都知道,队列是数据结构中一种特殊的线性表结构,和平时使用的List,Set这些数据结构相比有点特殊,它的特殊之处在于它只允许在队列的头部(Head)进行删除操作,在尾部(Tail)进行插入操作,这种方式的队列我们称之为先进
阅读全文

摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 本期带来线程池的第二期内容,如果对线程池的基本概念还不是很清楚,可以先看我上一篇文章。 面试官:谈谈你对线程池的理解 本期内容会从以下几个方面解析线程池的具体实现: 线程池状态 线程池初始化 如何执行任务 钩子方法 等待队列和排队策略 自定义拒绝策略
阅读全文

摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 在上一期我们讲了Thread.join()方法和CountDownLatch,这两者都可以做到等待一个线程执行完毕之后当前线程继续执行,并且CountDownLatch要更优秀,能满足同时等待多个线程执行,我们通过查看源码知道CountDownLat
阅读全文

摘要:大家好,我是小黑,一个在互联网苟且偷生的农民工。 先问大家一个问题,在主线程中创建多个线程,在这多个线程被启动之后,主线程需要等子线程执行完之后才能接着执行自己的代码,应该怎么实现呢? Thread.join() 看过我 并发编程之:线程 的朋友应该知道怎么做,在Thread类中有一个方法join(
阅读全文
摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 在Java并发编程中,经常会用到锁,除了Synchronized这个JDK关键字以外,还有Lock接口下面的各种锁实现,如重入锁ReentrantLock,还有读写锁ReadWriteLock等,他们在实现锁的过程中都是依赖与AQS来完成核心的加解锁
阅读全文

摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 池化 线程池是在计算机开发中常见的一种池化技术,是为了提高资源的利用率,将一些资源重复利用,避免重复的构建来提高效率。类似字符串常量池,数据库连接池,HttpClient连接池等,都是用的池化技术。 线程池 在没有线程池概念之前,我们要使用线程必须先
阅读全文

摘要:大家好,我是小黑,一个在互联网苟且偷生的农民工。 在之前的文章中,为了保证在并发情况下多线程共享数据的线程安全,我们会使用synchronized关键字来修饰方法或者代码块,以及在生产者消费者模式中同样使用synchronized来保证生产者和消费者对于缓冲区的原子操作。 synchronized的
阅读全文
摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 在开始讲今天的内容之前,先问一个问题,使用int类型做加减操作是不是线程安全的呢?比如 i++ ,++i,i=i+1这样的操作在并发情况下是否会有问题? 我们通过运行代码来看一下。 public class AtomicDemo { public s
阅读全文

摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 从前上一期【并发编程之:synchronized】 我们学到要保证在并发情况下对于共享资源的安全访问,就需要用到锁。 但是,加锁通常情况下会让运行效率降低,那有什么办法可以彻底避免对共享资源的竞争,同时又可以不影响效率呢?答案就是小黑今天要和大家讲的
阅读全文

摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。 之前的文章中跟大家分享了关于Java中线程的一些概念和基本的使用方法,比如如何在Java中启动一个线程,生产者消费者模式等,以及如果要保证并发情况下多线程共享数据的访问安全,操作的原子性,使用到了synchronized关键字。今天主要和大家聊一聊s
阅读全文

摘要:
大家好,我是小黑,一个在互联网苟且偷生的农民工。前段时间公司面试招人,发现好多小伙伴虽然已经有两三年的工作经验,但是对于一些Java基础的知识掌握的都不是很扎实,所以小黑决定开始跟大家分享一些Java基础相关的内容。首先这一期我们从Java的多线程开始。 好了,接下来进入正题,先来看看什么是进程和线
阅读全文
