博客专栏  >  编程语言   >  Java多线程与并发库

Java多线程与并发库

从Java传统线程技术开始介绍,进而逐步介绍Java5之后的并发库API的原理和使用。 文章中包含:线程同步、互斥、同步技术,定时器技术,线程池、线程锁、条件阻塞、阻塞队列、各种同步工具的介绍。 文章中穿插多个面试题供读者进行练习。

关注
25 已关注
19篇博文
  • 【Java多线程与并发库】1.传统线程技术回顾

    创建线程的两种传统方式 (1)创建Thread的子类,重写run方法 在Thread子类覆盖的run方法中编写运行代码。 package cn.edu.hpu.test; public class ...

    2016-09-23 16:02
    713
  • 【Java多线程与并发库】2.传统定时器技术回顾

    Java中的Timer类(java.util.Timer),是最常用的定时类,它可以在隔一段时间之后 再去执行其run方法中设置的代码语句。 使用Timer类定时执行程序有三种方法: (1)单次定时...

    2016-09-23 16:07
    650
  • 【Java多线程与并发库】3.传统线程互斥技术

    线程的同步互斥与通信 互斥的问题在使用线程的时候是我们必须要注意的。 例如两个线程同时开启,由于业务规则,需要访问同一个对象,要取得该对象 中的数据进行修改。 这样多个线程对同一个数据进行操作的实例有...

    2016-10-09 09:19
    694
  • 【Java多线程与并发库】5.线程范围内共享变量的概念与作用

    我们可以使用ThreadLocal实现线程范围的共享变量。 ThreadLocal的作用和目的,用于实现线程内的数据共享,即对于相同的程序代码,多个模块在 同一个线程中运行时要共享一份数据,而在另外...

    2016-10-11 12:58
    1015
  • 【Java多线程与并发库】6.ThreadLocal类及应用技巧

    之前我们了解了实现线程范围内数据共享的机制,接下来我们 可以使用JDK5提供的ThreadLocal类,来实现线程范围内数据共享。 ThreadLocal类其实就类似于我们上一次创建的Map。 我...

    2016-10-12 09:52
    480
  • 【Java多线程与并发库】7.多个线程之间共享数据的方式探讨

    多个线程访问共享对象和数据的方式 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个 Runnable对象中有一个共享数据,例如售票系统就可以这么做这么做。 2.如果每个线程执...

    2016-10-17 08:57
    514
  • 【Java多线程与并发库】8.java5线程并发库之线程池的应用

    Java5中的线程的并发库 并发库的代码均在Java的java.util.concurrent包下: 并发库中最常用的,是“线程池” (1)线程池出现的原因 什么是“线程池”呢?用“线程池”...

    2016-10-19 11:39
    430
  • 【Java多线程与并发库】9.Callable与Future的应用

    Callable&Future 它们的作用是,我们启动一个线程,线程结束的时候会返回一个结果, 我们可以通过Callable启动一个带返回数据的线程, 通过Future获取线程返回的结果。 例子:...

    2016-10-22 14:09
    348
  • 【Java多线程与并发库】10.java5的线程锁(读写锁)技术

    Lock&Condition实现线程同步通信 (1)Lock概念 Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似, 锁本身也是一个对象。两个线程执行的代码片段要...

    2016-10-23 15:46
    1023
  • 【Java多线程与并发库】11.java5条件阻塞Condition的应用

    Condition (1)概述 Condition是Java有关锁的包下面的一个类,锁我们只能实现互斥,不能实现通知。而Condition就是解决这个问题,Condition的功能类似在传统线程技术...

    2016-10-25 09:14
    358
  • 【Java多线程与并发库】12.java5的Semaphere同步工具

    Semaphore(信号灯) (1)概念 Semaphore可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以 控制同时访问资源的线程个数,例如实现一个文件允许的并发访问数...

    2016-10-27 18:12
    380
  • 【Java多线程与并发库】13.java5的CyclicBarrier同步工具

    CyclicBarrier循环路障 (1)概念 首先用通俗的话解释,表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,这就好比整个公司的人员利用周末时间集体郊游一样,先各自...

    2016-10-31 11:19
    423
  • 【Java多线程与并发库】14.java5的CountDownLatch同步工具

    CountDownLatch 犹如倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当计数器到达0时, 则所有等待着或单个等待着开始执行。 可以实现一个人(也...

    2016-11-02 09:06
    349
  • 【Java多线程与并发库】15.java5的Exchanger同步工具

    Exchanger 用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据, 第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。 比喻: 好比两个毒贩要进行交易...

    2016-11-03 14:03
    382
  • 【Java多线程与并发库】16.java5阻塞队列的应用

    可阻塞的队列 阻塞队列就是Java5的并发库给我们提供的一个集合。 (1)队列 队列是一个数组或集合,遵循数据“先入先出”的原则。 阻塞队列就是当队列满员的时候,新加入的队列成员要等待 队列的满员...

    2016-11-06 10:01
    461
  • 【Java多线程与并发库】17.java5同步集合类的应用

    同步集合 (1)传统集合的缺陷 传统的集合,在并发访问的时候,是有问题的。 如hashset、hashmap和arrayList,多个线程在对他们取数据、放数据 的时候,是有问题的,因为他们是线程不...

    2016-11-07 09:41
    622
  • 【Java多线程与并发库】18.java线程面试题1

    现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序 中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印 玩这些日志对...

    2016-11-10 15:23
    646
  • 【Java多线程与并发库】19.java线程面试题2

    现有的Test类中代码在不断的产生数据,然后交给TestDo.doSome()方法去处理,就好像生产者 在不断地产生数据,消费者在不断消费数据。请将程序改造成有10个线程来消费生成者产生的数据, 这些...

    2016-11-11 09:54
    510
  • 【Java多线程与并发库】20.java线程面试题3

    题目描述: 现有程序同时启动了4个线程去调用TestDo.doSome(key,value)方法,由于TestDo.doSome(key,value) 方法内的代码是先暂停1秒,然后再输出以秒为单位的...

    2016-11-12 18:46
    657
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部