
并发
文章平均质量分 80
阿念1989
我的编程之路
展开
-
Java并发学习之十九——线程同步工具之Phaser
本文是学习网络上的文章时的总结,感谢大家无私的分享。 JDK 1.7 添加了一个新的工具Phaser,Phaser的在功能上与CountDownLatch有部分重合。 下面使用Phaser类来同步3个并发任务。这3个任务会在3个不同的文件夹和它们的子文件夹中搜索扩展名是.log的文件。这个任务被分成3个步骤: 1. 在指定的文件夹和子文件夹中获得文件扩展名为.log的文件列表。原创 2014-10-09 17:14:26 · 5129 阅读 · 0 评论 -
Java并发学习之十八——线程同步工具之CyclicBarrier
本文是学习网络上的文章时的总结,感谢大家无私的分享。 CyclicBarrier 类有一个整数初始值,此值表示将在同一点同步的线程数量。当其中一个线程到达确定点,它会调用await() 方法来等待其他线程。当线程调用这个方法,CyclicBarrier阻塞线程进入休眠直到其他线程到达。当最后一个线程调用CyclicBarrier 类的await() 方法,它唤醒所有等待的线程并继续执行它们的原创 2014-09-29 11:25:22 · 2674 阅读 · 0 评论 -
Java并发学习之十七——线程同步工具之CountDownLatch
本文是学习网络上的文章时的总结,感谢大家无私的分享。 CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行。假如我们这个想要继续往下执行的任务调用一个CountDownLatch对象的await()方法,其他的任务执行完自己的任务后调用同一个CountDownLatch对象上的countDown()方法,这个调用awa原创 2014-09-26 15:18:03 · 26933 阅读 · 2 评论 -
Java并发学习之十六——线程同步工具之信号量(Semaphores)
本文是学习网络上的文章时的总结,感谢大家无私的分享。 当一个线程想要访问某个共享资源,首先,它必须获得semaphore。如果semaphore的内部计数器的值大于0,那么semaphore减少计数器的值并允许访问共享的资源。计数器的值大于0表示,有可以自由使用的资源,所以线程可以访问并使用它们。 package chapter3; import java.util.concurrent原创 2014-09-25 16:16:09 · 10108 阅读 · 0 评论 -
Java并发学习之十五——使用读写锁同步数据访问
本文是学习网络上的文章时的总结,感谢大家无私的分享。 读写锁重要的是写锁的使用,只用一个入口。 下面是读写锁使用的例子 package chapter2; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public cla原创 2014-09-17 14:34:57 · 4606 阅读 · 0 评论 -
Java并发学习之十四——使用Lock同步代码块
本文是学习网络上的文章时的总结,感谢大家无私的分享。 Java提供另外的机制用来同步代码块。它比synchronized关键字更加强大、灵活。Lock 接口比synchronized关键字提供更多额外的功能。在使用Lock时需要注意的是要释放Lock锁。 package chapter2; import java.util.concurrent.locks.Lock; import原创 2014-09-16 19:37:26 · 2947 阅读 · 0 评论 -
Java并发学习之十三——在同步代码中使用条件
本文是学习网络上的文章时的总结,感谢大家无私的分享。 其实很简单,大家看代码就知道是神马意思了。 package chapter2; import java.util.Date; import java.util.LinkedList; import java.util.List; public class EventStorage { private int maxSize; pr原创 2014-09-15 17:06:23 · 1965 阅读 · 0 评论 -
Java并发学习之十二——在同步的类里安排独立属性
本文是学习网络上的文章时的总结,感谢大家无私的分享。 当你使用synchronized关键字来保护代码块时,你必须通过一个对象的引用作为参数。通常,你将会使用this关键字来引用执行该方法的对象,但是你也可以使用其他对象引用。通常情况下,这些对象被创建只有这个目的。比如,你在一个类中有被多个线程共享的两个独立属性。你必须同步访问每个变量,如果有一个线程访问一个属性和另一个线程在同一时刻访问另一个原创 2014-09-15 16:49:06 · 2300 阅读 · 0 评论 -
Java并发学习之十一——同步方法
本文是学习网络上的文章时的总结,感谢大家无私的分享。 每个方法声明为synchronized关键字是一个临界区,Java只允许一个对象执行其中的一个临界区。 静态方法有不同的行为。只有一个执行线程访问被synchronized关键字声明的静态方法,但另一个线程可以访问该类的一个对象中的其他非静态的方法。 你必须非常小心这一点,因为两个线程可以访问两个不同的同步方法,如果其中一个是静态的而另一原创 2014-09-15 16:38:07 · 2100 阅读 · 2 评论 -
Java并发学习之十——用线程工厂创建线程
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、工厂模式是最有用的设计模式。它是一个创造模式,还有他的目的是创建一个 或者几个类对象的对象。有了这个工厂,我们有这些优势集中创建对象: 更简单的改变了类的对象创建或者说创建这些对象的方式; 更简单的为了限制的资源限制了对象的创建。 更简单的生成创建对象的统计数据。 2、Java提供一个接口,ThreadFactory接口实原创 2014-08-25 19:09:19 · 3942 阅读 · 0 评论 -
Java并发学习之八——在线程中处理不受控制的异常
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、Java里有2种异常: 检查异常:这些异常必须强制捕获她们或在一个方法里的throws子句中。 未检查异常:这些异常不用强制捕获它们。 2、在一个线程对象的run()方法里抛出一个检查异常,我们必须捕获并处理她们。因为run()方法不接受throws子句。当一个非检查异常抛出,默认的的行为是在控制台写下stack trace原创 2014-08-21 16:57:48 · 2074 阅读 · 0 评论 -
Java并发学习之七——守护线程
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、Java有两种Thread:“守护线程Daemon”与“用户线程User”。用户线程:Java虚拟机在它所有非守护线程已经离开后自动离开;守护线程:则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。 2、setDaemon(boolean on)方法可以方便的设置线程的Daemon模原创 2014-08-20 20:47:33 · 1711 阅读 · 0 评论 -
Java并发学习之六——等待线程的终结
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、在某些情况下,我们需要等待线程的终结。例如,我们可能会遇到程序在执行前需要初始化资源。在执行剩下的代码之前,我们需要等待线程完成初始化任务。为了达到此目的,我们使用Thread类的join()方法。当前线程调用某个线程的这个方法时,它会暂停当前线程,直到被调用线程执行完成。 2、Java提供2种形式的join()方法: Join(原创 2014-08-15 14:11:14 · 2545 阅读 · 0 评论 -
Java并发学习之五——线程的睡眠和恢复
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、Thread类的sleep方法,可以使线程睡眠。此方法接收一个整数作为参数,表示线程暂停运行的毫秒数。在调用sleep方法后,当时间结束时,JVM会安排他们CPU时间,线程会继续按指令执行。 另一种可能是使用一个有TimeUnit列举元素的sleep方法,使用线程类的sleep方法让当前线程睡眠,但是它接收的参数单位后原创 2014-08-13 20:47:17 · 3397 阅读 · 0 评论 -
Java并发学习之四——操作线程的中断机制
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、如果线程实现的是由复杂算法分成的一些方法,或者他的方法有递归调用,那么我们可以用更好的机制来控制线程中断。为了这个Java提供了InterruptedException异常。当你检测到程序的中断并在run()方法内捕获,你可以抛这个异常。 2、InterruptedException异常是由一些与并发API相关的Java方法,如sl原创 2014-08-12 17:17:13 · 2421 阅读 · 0 评论 -
Java并发学习之三——线程的中断
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、一个多个线程在执行的Java程序,只有当其全部的线程执行结束时(更具体的说,是所有非守护线程结束或者某个线程调用System.exit()方法的时候),它才会结束运行。有时,你需要为了终止程序而结束一个线程,或者当程序的用户想要取消某个Thread对象正在做的任务。 2、Java提供中断机制来通知线程表明我们想要结束它。中断机制的特原创 2014-08-11 14:49:52 · 2014 阅读 · 0 评论 -
Java并发学习之二——获取和设置线程信息
本文是学习网络上的文章时的总结,感谢大家无私的分享。 Thread类的对象中保存了一些属性信息能够帮助我们辨别每一个线程,知道它的一些信息 ID:每个线程的独特标示; Name:线程的名称; Priority:线程对象的优先级。优先级别在1-10之间,1是最低级,10是最高级。 Status:线程状态。在java中,线程只有6种状态:new,runnable,blocked,wait原创 2014-08-08 18:54:29 · 3565 阅读 · 0 评论 -
Java并发学习之一——线程的创建
本文是学习网络上的文章时的总结,感谢大家无私的分享。 1、与每个Java语言中的元素一样,线程是对象。在Java中,我们有两种方式创建线程: a、通过直接继承thread类,然后覆盖run方法。 b、构建一个实现Runnable接口的类,然后创建一个thread类对象并传递Runnable对象作为构造参数 代码如下 package chapter; /** * * Descr原创 2014-08-07 14:56:06 · 2318 阅读 · 2 评论