
Concurrent
钛合金编程
静以修身,俭以养德!The greatest thing is, at any moment, to be willing to give up who we are in order to become all that we can be.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解析ThreadPoolExecutor
ThreadPoolExecutor能够用于创建一个线程池,它提供了一些有用的方法: 实例化一个线程池,实践中用的比较多是以下构造方法: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,原创 2013-04-28 11:44:08 · 1927 阅读 · 0 评论 -
Java并发编程之线程管理(Executor框架15)
4.5指定一段时间运行并发任务当你发送一个任务给指定的executor时,它依据executor的配置来迅速被运行。当你对线程的运行不太感兴趣,只需要它快速的运行就可以了,这就是它的使用场合。当你想间歇地执行一个任务或者定期地执行一个任务。对于这些目的,Executor框架提供了一个ScheduledThreadPoolExecutor类。请看下面实例实例代码。定义Task类,实现一个简单原创 2014-03-30 23:21:26 · 1208 阅读 · 0 评论 -
Java并发编程之线程管理(Executor框架13)
4.3运用执行器返回结果Executor框架的优势之一就是你能够运行并发的任务并且获得对应的结果。Java 并发API完成这个功能是通过下面两个接口:l Callable: 这个接口有call()方法。在这个方法中,你不得不实现一个任务的逻辑代码。Callable接口是一个参数化的接口,意味着你不得不说明call()方法返回的数据类型。l Future:这个接口有一些方法去获取由C原创 2014-03-30 23:22:35 · 1230 阅读 · 0 评论 -
Java并发编程之线程管理(Executor框架14)
4.4运行并发任务并返回所有运行结果ThreadPoolExecutor提供了一个方法,它允许你发送给executor一列的任务链表,并且等待这些任务的终结。请看下面实例。Result类的定义如下所示: /** * This class stores the resultgenerated by one task * */public class Result {原创 2014-03-30 23:22:08 · 1202 阅读 · 0 评论 -
Red Hat Enterprise Linux AS release 4 下SSH无法使用无密码登陆的原因分析
Linux间ssh不能够使用无密码登陆原因: 1. 认证文件的权限。一般都是这样的权限: 2. OS系统设置。root登录修改配置文件:/etc/ssh/sshd_config,将其中三行的注释去掉。 本人整理,估计就这么多啦。如果有疑问,欢迎提问。原创 2014-04-02 14:26:15 · 1408 阅读 · 0 评论 -
Java并发编程之线程管理(基本线程同步3)
(上一节的继续)2.2 使用Lock机制 Java提供了另外一种机制来同步代码块。它是比synchrozied关键字更为强大且弹性的机制。它是基于锁接口和实现了这个接口的类(如ReetrantLock类)。这个机制表现出一些优势,如下所示:1. 以一种更加弹性的方式允许同步块结构,而使用synchrozied关键字,你必须以一个机构化的方式来获原创 2014-03-26 22:16:46 · 1237 阅读 · 0 评论 -
Java并发编程之线程管理(基本线程同步2)
2 基本线程同步2.1使用 synchronized关键字这一节中,我们将呈现许多秘诀,这个秘诀教会我们如何使用Java语言提供我们的两个基本同步(synchronization)机制:Ø 关键字同步;Ø 锁接口和它的实现。如果你知道一个方法不会被超过一个线程调用,不用使用synchronized 关键字。你能够使用synchronized方法来递归调用,仅仅一原创 2014-03-26 22:02:00 · 1266 阅读 · 0 评论 -
Java并发编程之线程管理(基本线程同步4)
1.3 读写LockLock机制最具重大意义的改进之一就是读写锁(ReadWriteLock)接口和ReentrantReadWriteLock类,这个类是唯一一个实现这个读写锁的类。在这个类中,有两个锁,一个事读操作,一个事写操作。有超过一个线程并行的进行读操作,但是写操作只能是某一个线程。当一个线程做写操作时,其它的线程不能能够进行读操作。下面使用一个实例来说明这一点。定义一个读者原创 2014-03-26 23:11:00 · 1430 阅读 · 0 评论 -
Java并发编程之线程管理(线程创建1)
1线程管理 在这一节中,我们将学习如何创建和运行一个线程。在Java语言中,我们有两种方式创建一个线程:1. 扩展Thread类,覆盖run()方法2. 构建一个实现Runnable接口的类,定义自己run()方法,然后,实用则个类的实例对象作为Thread构造方法的参数来创建Thread对象。创建一个线程对象,它不会创建一个新的执行线程。也就是说,调原创 2014-03-23 23:00:54 · 1142 阅读 · 0 评论 -
Java并发编程之线程管理(Executor框架16)
4.6 在一个执行器中删除一个任务 当你使用Executor时,你没有必要管理线程,因为它已经帮我们管理了线程。你仅仅需要实现Runnable或者Callable任务并发送它们给这个执行器executor。这个executor负责在线程池中创建、管理线程,并且如果它们不需要了,直接结束这些线程。有时,你可能想去删除一个你已经发送给executor的任务。这种情况,你直接调用Future对原创 2014-03-30 23:20:45 · 1362 阅读 · 0 评论 -
Java并发编程之线程管理(Executor框架12)
上节4.2 创建一个可变线程池大小的执行器 知道newCachedThreadPool()创建的ThreadPoolExecutor的缺陷后,有必要使用其它策略来克服这个问题。如果你想避免这个问题,Executor类提供了一个方法来创建一个可修复大小的线程执行器。这个线程执行器有一个最大线程数。如果你发送去的线程数超过这个数,Executor不会创建额外的线程,并且剩余的任务将被原创 2014-03-30 21:39:55 · 1234 阅读 · 0 评论 -
Java并发编程之线程管理(基本线程同步6)
3.5 在一个锁中使用多种状态一个锁(Lock)可能和一个或者多个状态相关联,这些状态在Condition接口中已经被声明好了。这些状态的作用就是去运行线程控制一个锁或者检查一个状态是否为true或者false。如果是false,这个线程将被挂起直到其它的线程将它们唤醒。这个Condition接口提供了特定的机制去挂起一个线程和唤醒一个挂起的线程。在并发编程中,一个金典的问题就是生产-消费原创 2014-03-27 22:41:25 · 1268 阅读 · 0 评论 -
深度理解Thread Pool, Executor, Callable/Future
在JDK1.5版,Java标准包中就包含了对线程池的支持,提供了包java.lang.concurrent. 1. ThreadPool 线程池是一个线程管理的集合,能够有效执行任务。当大量任务使用线程池执行时,由于线程循环的执行,整个性能得到提高,也减少了每个任务调用上的花费。实现线程池,你能够运用ExecutorService的实现类,比如ThreadPool原创 2013-04-27 23:04:31 · 3658 阅读 · 0 评论 -
Java并发编程之线程管理(高级线程同步7)
3线程同步实用程序在这一节中,我们将讨论如何使用高级别机制去获得多线程的同步(synchronized)。这些高级别机制有下面几种:Ø 信号(Semaphores):一个信号就是一个计数器,它控制着对于一个或者多个共享资源的访问。这个机制是并发编程的基本工具,在大多数编程语言中都提供这样的机制。Ø 倒计时弹簧锁:CountDownLatch类是Java语言提供的一种机制,允许一原创 2014-03-30 18:42:10 · 1180 阅读 · 0 评论 -
Java并发编程之线程管理(高级线程同步9)
3.3 等待多个并发事件Java并发API提供了一个允许一个或者多个线程等待直到一系列操作完成的类—CountDownLatch。这个类是一个integer数来初始化这个类的实例,这个数是线程将要等待执行操作数。当一个线程想要去等待这些操作的执行时,它使用await()方法。这个方法使线程睡眠直到所有的操作执行完成。当这些操作中的一个完成后,它使用countDown()方法减少CountDow原创 2014-03-30 19:02:52 · 1217 阅读 · 0 评论 -
Java并发编程之线程管理(高级线程同步10)
3.4 在一个共同点上同步任务Java 并发API提供了一个同步实用程序,它允许两个或者多个线程在一个确定的点进行同步(synchronization)。这个类就是循环阻塞类(CyclicBarrier)。这个类与CountDownLatch类有点类似,但是也有不同之处。CyclicBarrier类也是以一个integer数来初始化一个实例类,在一个确定点上,这个数就是所有线程必须同步的线原创 2014-03-30 19:06:45 · 1230 阅读 · 0 评论 -
Java并发编程之线程管理(高级线程同步8)
3.2 控制并发地访问一个资源的多个备份在这一节中,我将实现一个二进制信号。这些类型的信号能够被用来保护对于一个共享资源的访问,或者是对于同一时刻只能够被一个线程执行的临界部分。当你需要保护一个资源的不同类型的备份时,或者是在同一时刻只能让一个线程执行,信号都可以用来现实这样的功能。请看下面的例子,这个例子已经在上一节中已经讲过,这里只要做稍微的修改就可以了。定义PrintQueueT原创 2014-03-30 18:56:42 · 1222 阅读 · 0 评论 -
Java并发编程之线程管理(Executor框架11)
4线程执行器如果你不得不开发一个需要运行许多并发任务的程序,这种方法有下面这些劣势:Ø 你不得不实现所有相关代码来管理线程对象(对象的创建,结束,获取结果)。Ø 每个任务,你需要创建一个线程。如果你不得不执行一个超大量的任务,这将影响到应用程序的吞吐量。处理不好,会影响系统的整体性能。Ø 你不得不高效地控制和管理计算机的系统资源。如果你创建了太对的线程,你的系统资源会原创 2014-03-30 21:38:29 · 1382 阅读 · 0 评论 -
Java并发编程之线程管理(基本线程同步5)
2.4 公平锁 ReentrantLock和ReentrantReadWriteLock类的构造器允许名为公平的布尔参数,这个参数允许你控制这两个类的行为。false是默认值,这意味着以非公平模式运行。在这种模式下,当有些线程等待一个锁时,这个锁不得不选择它们中的一个去访问临界部分,它做出选择没有参考任何标准。true值称之为公平模式,当多个线程等待一个锁时,这个锁就会根据等待时间最原创 2014-03-27 21:07:13 · 1269 阅读 · 0 评论