一个小队去登山,每位队员登山的速度不同。山上有几个集合点,在每一集合点处,先到达的队员只有等后面的队员全部到达集合点后才能继续向下一个集合点出发。JDK1.5提供的CyclicBarrier模拟了这种情况。每一个线程相当于一个登山队员,CyclicBarrier相当于山上的集合点。只有等所有线程都执...
分类:
编程语言 时间:
2014-05-01 11:34:29
阅读次数:
388
JDK1.5提供了一个计数信号量Semaphore类。Semaphore
通常用于限制可以访问某些资源(物理或逻辑的)的线程数目,并提供了同步机制。Semaphore提供了两个构造器来创建对象:1)Semaphore(int
permits):创建具有给定的许可数和非公平的公平设置的Semaphor...
分类:
编程语言 时间:
2014-05-01 11:33:50
阅读次数:
431
CountDownLatch
类是一个倒计时计数器,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用给定的计数初始化
CountDownLatch。由于调用了countDown() 方法,所以在当前计数到达零之前,await
方法会一直受阻塞。之后,会释放所有等待的线程,aw...
分类:
编程语言 时间:
2014-05-01 08:21:22
阅读次数:
485
JDK1.5提供了Exchanger用于两个线程的数据交换。两个线程先后到达交换点,先到达的线程会等待后到达的线程,然后两个线程互相交换数据,交换后双方持对方的数据。Exchanger只提供了一个构造器:Exchanger():创建一个新的Exchanger。Exchanger中也只有两个方法:V
...
分类:
编程语言 时间:
2014-05-01 08:18:46
阅读次数:
455
JDK1.5提供了阻塞队列接口BlockingQueue,它是一个有界阻塞队列。BlockingQueue实现是线程安全的,可以安全地与多个生产者和多个使用者一起使用。使用时用其实现类ArrayBlockingQueue,它一个由数组支持的有界阻塞队列。此队列按
FIFO(先进先出)原则对元素进行排...
分类:
编程语言 时间:
2014-05-01 06:58:46
阅读次数:
373
在进入java平台的线程对象之前,基于基础篇(一)的一些问题,我先插入两个基本概念。
[线程的并发与并行]
在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurr.....
分类:
编程语言 时间:
2014-05-01 06:09:22
阅读次数:
459
不同于c++等语言的调用操作系统的线程调控机制来实现多线程,java语言内置了多线程的api包,因此可以更加方便的使用多线程技术。(1)线程的问题。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一...
分类:
编程语言 时间:
2014-04-29 22:09:12
阅读次数:
689
转自:线程间通信、等待唤醒机制、生产者消费者问题(Lock,Condition)、停止线程和守护线程、线程优先级1线程间通信1.1线程间通信其实就是多个线程在操作同一个资源,但是操作的动作不同。比如一个线程给一个变量赋值,而另一个线程打印这个变量。1.2等待唤醒机制wait():将线程等待,释放了C...
分类:
编程语言 时间:
2014-04-29 17:12:45
阅读次数:
527
多并发的时候,在什么情况下必须加锁?如果不加锁会产生什么样的后果。加锁的场景跟java的new
thread和Runnable的关系是什么?看看java的concurrentMap源码。还有spring 的web.xml启动执行源码
分类:
编程语言 时间:
2014-04-28 03:16:05
阅读次数:
537
1、JAVA多线程简单示例 1.1 、Thread 集成接口Runnable 1.2
、线程状态,可以通过 Thread.getState()获取线程状态: New (新创建) Runnable (可以运行) Blocked (被阻塞)
Waiting (等待) Tim...
分类:
编程语言 时间:
2014-04-27 21:22:25
阅读次数:
813