博客专栏  >  编程语言   >  Java并发技术

Java并发技术

Java线程是一项非常基本和重要的技术,在偏底层和偏技术的Java程序中不可避免地要使用到Java线程技术,本专栏主要总结一下Java并发中的一些技术。

关注
57 已关注
19篇博文
  • 【java并发】一道多线程问题

    前面几篇博文基本上总结了一下java并发里的一些内容,下面通过几个练习题巩固一下。 题目描述: 模拟一个场景:处理16条日志记录,每条日志记录打印时间需要1秒,正常情况下如果将这16条记...

    2016-06-07 17:29
    3085
  • 【java并发】阻塞队列的使用

    在前面一篇名为条件阻塞Condition的应用的博客中提到了一个拔高的例子:利用Condition来实现阻塞队列。其实在java中,有个叫ArrayBlockingQueue的类提供了阻塞队列的功能,...

    2016-06-07 09:27
    3993
  • 【java并发】线程同步工具Exchanger的使用

    如果两个线程在运行过程中需要交换彼此的信息,比如一个数据或者使用的空间,就需要用到Exchanger这个类,Exchanger为线程交换信息提供了非常方便的途径,它可以作为两个线程交换对象的同步点,只...

    2016-06-06 09:48
    2849
  • 【java并发】线程同步工具CyclicBarrier的使用

    上一节中总结了Semaphore同步工具的使用,Semaphore主要提供了一个记数信号量,允许最大线程数运行。CyclicBarrier是另一个同步工具,这一节主要来总结一下CyclicBarrie...

    2016-06-05 21:13
    2997
  • 【java并发】线程同步工具Semaphore的使用

    Semaphore通常用于限制可以访问某些资源(物理或逻辑的)的线程数目,我们可以自己设定最大访问量。它有两个很常用的方法是acquire()和release(),分别是获得许可和释放许可。 官方J...

    2016-06-05 10:00
    3199
  • 【java并发】条件阻塞Condition的应用

    Condition将Object监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,为每个对象提供多个等待 set(wait...

    2016-06-04 16:38
    4277
  • 【java并发】线程锁技术的使用

    Lock锁好比传统线程模型中的synchronized技术,但是比sychronized方式更加面向对象,与生活中的锁类似,锁本身也应该是个对象。两个线程执行的代码片段如果要实现同步互斥的效果,它们必...

    2016-06-04 07:52
    4705
  • 【java并发】Callable与Future的应用

    Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。而Callable可以返回一个结果...

    2016-06-03 19:11
    3988
  • 【java并发】线程并发库的使用

    1. 线程池的概念  在java5之后,就有了线程池的功能了,在介绍线程池之前,先来简单看一下线程池的概念。假设我开了家咨询公司,那么每天会有很多人过来咨询问题,如果我一个个接待的话,必然有很多人要排...

    2016-06-02 21:15
    5320
  • 【java并发】原子性操作类的使用

    在java5以后,我们接触到了线程原子性操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,本文总结一下Atomic系列的类的使用方法,其中包含: ...

    2016-06-01 21:42
    5795
  • 【java并发】多个线程间共享数据

    先看一个多线程间共享数据的问题: 设计四个线程,其中两个线程每次对data增加1,另外两个线程每次对data减少1。   从问题来看,很明显涉及到了线程间通数据的共享,四个线程共享一个data,共...

    2016-05-31 22:56
    11877
  • 【java并发】造成HashMap非线程安全的原因

    0. 写在前面  在前面我的一篇总结线程范围内共享数据文章中提到,为了数据能在线程范围内使用,我用了HashMap来存储不同线程中的数据,key为当前线程,value为当前线程中的数据。我取的时候根据...

    2016-05-31 11:18
    6849
  • 【java并发】ThreadLocal类以及应用技巧

    上一节总结了一下,线程范围内的数据共享问题,即定义一个Map,将当前线程名称和线程中的数据以键值对的形式存到Map中,然后在当前线程中使用数据的时候就可以根据当前线程名称从Map中拿到当前线程中的数据...

    2016-05-30 22:13
    2331
  • 【java并发】线程范围内共享数据

    假设现在有个公共的变量data,有不同的线程都可以去操作它,如果在不同的线程对data操作完成后再去取这个data,那么肯定会出现线程间的数据混乱问题,因为A线程在取data数据前可能B线程又对其进行...

    2016-05-30 09:11
    4528
  • 【java并发】传统线程同步通信技术

    先看一个问题: 有两个线程,子线程先执行10次,然后主线程执行5次,然后再切换到子线程执行10,再主线程执行5次……如此往返执行50次。   看完这个问题,很明显要用到线程间的通信了, 先分析一下...

    2016-05-29 11:50
    5311
  • 【java并发】线程技术之死锁问题

    我们知道,使用synchronized关键字可以有效的解决线程同步问题,但是如果不恰当的使用synchronized关键字的话也会出问题,即我们所说的死锁。死锁是这样一种情形:多个线程同时被阻塞,它们...

    2016-05-29 09:52
    4142
  • 【java并发】传统线程互斥技术—synchronized

    在多个线程同时操作相同资源的时候,就会遇到并发的问题,如银行转账啊、售票系统啊等。为了避免这些问题的出现,我们可以使用synchronized关键字来解决,下面针对synchronized常见的用法做...

    2016-05-28 16:44
    4578
  • 【java并发】传统线程技术中的定时器技术

    传统线程技术中有个定时器,定时器的类是Timer,我们使用定时器的目的就是给它安排任务,让它在指定的时间完成任务。所以先来看一下Timer类中的方法(主要看常用的TimerTask()方法):

    2016-05-28 12:29
    3550
  • 【java并发】传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法;二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread。这两种方式...

    2016-05-21 17:02
    5397

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部