java线程
文章平均质量分 74
xxxxxhua
这个作者很懒,什么都没留下…
展开
-
传统线程互斥技术(三)
1、使用synchronized关键字,来保证线程安全问题,下面事事例代码:public class TranditionalThreadSynchronized { public static void main(String args[]) { Outputer outputer = new Outputer(); new Thread原创 2015-01-26 23:21:34 · 408 阅读 · 0 评论 -
java5同步集合类的应用(十九)
/** * @author Administrator *传统的集合操作是线程不安全的,现在我们来说一下例子来证明一下 *在下面的图中就会出现死循环,现在cursor等于4,然后有另外一个线程来了,remove这里面cursor==3,然后正准务返回false这 *就返回true了,就再出现死循环了 *以前我们是怎么做的也,是通过Collections.synchroziedM原创 2015-02-10 22:40:35 · 468 阅读 · 0 评论 -
java5条件阻塞Condition的应用(十三)
notify和wait必须在sychroized里面写不然会报错condition就是用来代替wait和notify的public class ConditionCommunication {/*** @param args* notify和wait必须在sychroized里面写不然会报错* *这个condition就是用来代替wait原创 2015-02-09 21:40:53 · 683 阅读 · 0 评论 -
java5的CountDownLatch同步工具(十六)
犹如倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当计数到达0时,则所有等待者或单个等待者开始执行。这直接通过代码来说明CountDownLatch的作用,这样学员的理解效果更直接。可以实现一个人(也可以是多个人)等待其他所有人都来通知他,这犹如一个计划需要多个领导都签字后才能继续向下实施。还可以实现一个人通知多个人的效果,类似裁判一声口令,运动员同原创 2015-02-09 22:42:08 · 431 阅读 · 0 评论 -
java5的CyclicBarrier同步工具(十五)
表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,这就好比整个公司的人员利用周末时间集体郊游一样,先各自从家出发到公司集合后,再同时出发到公园游玩,在指定地点集合后再同时开始就餐,…。public class CyclicBarrierTest {public static void main(String[] args) {ExecutorServic原创 2015-02-09 22:18:37 · 383 阅读 · 0 评论 -
可阻塞的队列(十八)
首先我们来了解一下队列,就是一个集合,相当于一个单元格,队列有固定大小的,也有没有固定大小的,如果是固定大小的再放的话,就会阻塞或者报错wait,都会有这里面分别介绍了这三个方法的区别我们来使用这个可阻塞的队列public class BlockingQueueTest {public static void main(String[] args) {final Blo原创 2015-02-09 23:50:34 · 468 阅读 · 0 评论 -
java5的Exchanger同步工具(十七)
Exchanger用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。public class ExchangerTest {public static void main(String[] args) {ExecutorService service = Executors.new原创 2015-02-09 22:54:26 · 417 阅读 · 0 评论 -
java5的Semaphere同步工具(十四)
Semaphore可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。Semaphore实现的功能就类似厕所有5个坑,假如有十个人要上厕所,那么同时能有多少个人去上厕所呢?同时只能有5个人能够占用,当5个人中的任何一个人让开后,其中在等待的另外5个人中又有一个可以占用了。另外等待的5个人中可以是随机获得原创 2015-02-09 22:10:53 · 814 阅读 · 0 评论 -
java5读写锁技术的妙用(十二)
读写锁,分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥,由JVM控制。ReentrantReadWriteLock构造方法摘要ReentrantReadWriteLock() 使用默认(非公平)的排序属性创建一个新的 ReentrantReadWriteLock。ReentrantReadWrite原创 2015-02-09 00:29:45 · 417 阅读 · 0 评论 -
java5的线程锁技术(十一)
java5有当中的lock就是用来替换sychrozied的使用事例:java.util.concurrent.locks 为锁和等待条件提供一个框架的接口和类,接口摘要ConditionCondition 将 Object 监视器方法(wait、notify 和notifyAll)分解成截然不同的对象,以便通过将原创 2015-02-08 23:59:21 · 421 阅读 · 0 评论 -
java5线程并发库的应用(九)
线程池的概念与Executors类的应用创建固定大小的线程池创建缓存线程池创建单一线程池关闭线程池shutdown与shutdownNow的比较用线程池启动定时器调用ScheduledExecutorService的schedule方法,返回的ScheduleFuture对象可以取消任务。支持间隔重复任务的定时方式,不直接支持绝对定时方式,需要转换成相对时间方式。原创 2015-02-02 21:58:12 · 436 阅读 · 0 评论 -
Callable与Future的应用得到线程的返回结果(十)
获取一个线程的运行结果public interface Callable返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做call 的方法。 Callable 接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是Runnable 不会返回结果,并且无法抛出经过检查的异常。只有一个方法Vcall() 计算结果,如果无法计算结果,则抛原创 2015-02-02 23:02:00 · 437 阅读 · 0 评论 -
多个线程之间共享数据的方式探讨(七)
l如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,买票系统就可以这么做。l如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,有如下两种方式来实现这些Runnable对象之间的数据共享:Ø将共享数据封装在另外一个对象中,然后将这个对象逐一传递给各个Runnable对象。每个线程对共享数据的操作方法也分配到那个对原创 2015-01-31 22:29:18 · 1265 阅读 · 0 评论 -
java5原子性操作类的应用(八)
Java5的线程并发库 这里面介绍一下,为什么要使用这个线程并发库也,使用的好处是什么也,比如现在有一个例子,现在多线程操作,对同一个int进行操作,现在一个线程对inta进行加,加完了过后,你要取出来,这时候你还没有取出来的时候别的已经开始相加了,别的一增加完你再取出来这个数就是不对的,使用atom这个以后,如果这里面你增加,然后别的数据再加,这时候加不进来,必须是这个数据加完了,然原创 2015-01-31 23:17:21 · 529 阅读 · 0 评论 -
线程范围内共享变量的概念与作用(六)
多个模块在同一个线程中运行时要共享同一份数据,实现线程范围内的数据共享可以用上一节中所用的方法。 JDK1.5提供了ThreadLocal类来方便实现线程范围内的数据共享,它的作用就相当于上一节中的Map。 每个线程调用全局ThreadLocal对象的set方法,就相当于往其内部的map集合中增加一条记录,key就是各自的线程,value就是各自的set方法传进去的原创 2015-01-31 20:42:34 · 588 阅读 · 0 评论 -
java多线程回顾定时器(二)
1、定时器的使用:private static int count = 0;public static void main(String[] args) {/* new Timer().schedule(new TimerTask() {@Overridepublic void run() {System.out.println("bombing!");}}原创 2015-01-11 17:42:19 · 489 阅读 · 0 评论 -
线程范围内共享变量的概念与作用(五)
就是要实现线程一和线程二里面的数据是分离的,但是线程一里面的数据是可以共享,这让我想到我当初做下载管理的时候就是这种方式,数据多了就使用集合保存起来public class ThreadScopeShareData {private static int data = 0;private static Map threadData = new HashMap();publi原创 2015-01-28 23:34:16 · 811 阅读 · 0 评论 -
线程同步通信技术(四)子线程10次与主线程100次来回循环执行50次
/** * @author Administrator *04_传智播客_张孝祥_传统线程同步通信技术 *synchronized这个表示我在执行的时候你就不能执行,互启 */public class TraditionalThreadCommunication { public static void main(String[] args) {原创 2015-01-28 22:42:07 · 643 阅读 · 0 评论 -
java多线程的回顾(一)
1、java多线程创建的两种方法/*** @param args*/public static void main(String[] args) {Thread thread = new Thread(){@Overridepublic void run() {while(true){try {Thread.sleep(500);} catch (I原创 2015-01-11 17:01:22 · 462 阅读 · 0 评论