Java多线程
凛冬降至
这个作者很懒,什么都没留下…
展开
-
Java并发编程:Thread类的使用
Java并发编程,是Java的高级开发部分,平时项目很少用到,主要原因还是不熟悉,从今天开始整体学习研究下,后面会有一个系列的学习,也为以后在项目中经常使用打下基础。首先来回顾下Java最基本的多线程开发,就是java.lang.Thread类。以下是本文包含的知识点:一、线程的基本概念二、线程的创建和启动三、线程的状态控制四、线程的同步五、生产者消费下面开始本文的...2016-07-16 11:40:22 · 161 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 一.CountDownLatch用法Cou...原创 2018-04-01 18:54:55 · 121 阅读 · 0 评论 -
Java并发编程:线程池
我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今天我们...原创 2018-04-01 18:15:56 · 126 阅读 · 0 评论 -
Java并发编程:阻塞队列
今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就...原创 2018-04-01 15:20:36 · 97 阅读 · 0 评论 -
ThreadLocal详解
本篇介绍ThreadLocal以下三点:1.ThreadLocal概述2.ThreadLocal基本操作3.ThreadLoad实现原理 一、ThreadLocal概述ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。举个例子,我出门需要先坐公交再做地铁,这里的坐...原创 2018-04-01 10:32:59 · 167 阅读 · 0 评论 -
Java并发编程:AtomicInteger&CAS
很多情况下我们只需要一个简单的、高效的、线程安全的递增递减方案,而Java中++i或--i并不是线程安全的,但是java.util.concurrent包中提供原子(Atomic) 操作的类,今天我们就来学习它最基本的AtomicInteger。 以下是本文包含的知识点:1.什么是原子操作2.AtomicInteger用法3.CAS介绍4.AtomicIntegerAr...2016-07-30 16:47:59 · 162 阅读 · 0 评论 -
Java并发编程:Lock&ReentrantLock&Condition
在Java中,除了使用synchronized关键字实现线程同步,还可以使用java.util.concurrent.locks包下的重入锁(ReentrantLock)来实现同步。今天我们就来学习ReentrantLock同步。以下是本文包含的知识点:1.Lock接口介绍2.ReentrantLock的使用3.ReentrantLock与synchronized实现同步的区别...2016-07-23 22:45:27 · 175 阅读 · 0 评论 -
Java并发编程:synchronized&volatile
根据前面讲的Java内存模型,已经接触不少synchronized,而且它非常强大,能解决大部分的并发问题,今天我们一起来学习它吧。以下是本文包含的知识点:1.Java的线程安全2.synchronized的用法3.synchronized的实现原理4.volatile关键字 一、Java的线程安全我们这里讨论的线程安全,限定于多个线程之间存在共享数据访问的...2016-07-19 16:37:30 · 121 阅读 · 0 评论 -
Java并发编程:Java内存模型
学习Java并发编程,必须要学习Java内存模型,也是学习和理解后面更深入的课程打下基础,做好准备。今天我们就来学习下Java内存模型。以下是本文包含的知识点:1.硬件的效率与一致性2.Java内存模型3.主内存和工作内存4.原子性、可见性与有序性5.先行发生原则(Happens-before)一、硬件的效率与一致性由于计算机的存储设备与处理器的运算速...2016-07-18 17:13:52 · 135 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任...原创 2018-04-01 22:07:17 · 108 阅读 · 0 评论