多线程
qq_15140841
结果比开始重要,过程比结果重要。
展开
-
同步器-CyclicBarrier
java.util.concurrent 包包含了几个可以帮助我们管理线程间相互合作的集合类, 这些机制具有为线程之间的共用集结点模式 ( common rendezvous patterns ) 提供的 “ 预置功能 ”( canned functionality )CyclicBarrier允许线程集等待直至其中预定数目的线程到达一个公共障栅 ( barrier ), 然后可以选择执行一个处理...原创 2018-05-19 13:14:12 · 233 阅读 · 0 评论 -
线程管理8,9
线程管理(八)在线程里处理不受控制的异常 Java里有2种异常: 检查异常(Checked exceptions): 这些异常必须强制捕获它们或在一个方法里的throws子句中。 例如, IOException 或者ClassNotFoundException。 未检查异常(Unchecked exceptions): 这些异常不用强制捕获它们。例如, NumberFormatExcepti...原创 2019-07-27 23:41:57 · 99 阅读 · 0 评论 -
线程管理5,6,7
线程管理(五)线程的睡眠和恢复 有时, 你会感兴趣在一段确定的时间内中断执行线程。例如, 程序的一个线程每分钟检查反应器状态。其余时间,线程什么也不做。在这段时间,线程不使用任何计算机资源。过了这段时间,当JVM选择它时,线程会准备好继续执行。为达此目的,你可以使用Thread类的 sleep() 方法 。此方法接收一个整数作为参数,表示线程暂停运行的毫秒数。 在调用sleep() 方法后,当时...原创 2019-07-27 20:04:01 · 126 阅读 · 0 评论 -
线程管理3,4
线程管理(三)线程的中断 一个多个线程在执行的Java程序,只有当其全部的线程执行结束时(更具体的说,是所有非守护线程结束或者某个线程调用System.exit()方法的时候),它才会结束运行。有时,你需要为了终止程序而结束一个线程,或者当程序的用户想要取消某个Thread对象正在做的任务。 Java提供中断机制来通知线程表明我们想要结束它。中断机制的特性是线程需要检查是否被中断,而且还可以决...原创 2019-07-26 22:52:47 · 111 阅读 · 0 评论 -
基本线程同步1,2,3
基本线程同步(一)引言 在并发编程中发生的最常见的一种情况是超过一个执行线程使用共享资源。在并发应用程序中,多个线程读或写相同的数据或访问同一文件或数据库连接这是正常的。这些共享资源会引发错误或数据不一致的情况,我们必须通过一些机制来避免这些错误。 解决这些问题从临界区的概念开始。临界区是访问一个共享资源在同一时间不能被超过一个线程执行的代码块。 Java(和 几乎所有的编程语言)提供同步机制...原创 2019-07-30 23:59:47 · 172 阅读 · 0 评论 -
基本线程同步6,7,8
基本线程同步(六)使用读/写锁同步数据访问 使用读/写锁同步数据访问 锁所提供的最重要的改进之一就是ReadWriteLock接口和唯一 一个实现它的ReentrantReadWriteLock类。这个类提供两把锁,一把用于读操作和一把用于写操作。同时可以有多个线程执行读操作,但只有一个线程可以执行写操作。当一个线程正在执行一个写操作,不可能有任何线程执行读操作。 在这个指南中,你将会学习如...原创 2019-08-02 23:35:28 · 161 阅读 · 0 评论 -
基本线程同步4,5
基本线程同步(四)在同步代码中使用条件 在并发编程中的一个经典问题是生产者与消费者问题,我们有一个数据缓冲区,一个或多个数据的生产者在缓冲区存储数据,而一个或多个数据的消费者,把数据从缓冲区取出。 由于缓冲区是一个共享的数据结构,我们必须采用同步机制,比如synchronized关键字来控制对它的访问。但是我们有更多的限制因素,如果缓冲区是满的,生产者不能存储数据,如果缓冲区是空的,消费者不能...原创 2019-08-02 23:21:56 · 116 阅读 · 0 评论 -
同步器-CountDownLatch
一个倒计时门栓 ( CountDownLatch ) 让一个线程集等待直到计数变为 0。 倒计时门栓是一次性的。 一旦计数为 0 ,就不能再重用了。一个有用的特例是计数值为 1 的门栓。 实现一个只能通过一次的门 。 线程在门外等候直到另一个线程将计数器值置为0.举例来讲, 假定一个线程集需要一些初始的数据来完成工作 。 工作器线程被启动并在门外等候。 另一个线程准备数据 。 当数据准备好的时候 ...原创 2018-05-19 13:56:42 · 129 阅读 · 0 评论 -
同步器-Semaphore
信号量(Semaphore)概念上讲, 一个信号量管理许多的许可证 ( permit ) 。 为了通过信号量 , 线程通过调用acquire 请求许可 。 其实没有实际的许可对象 , 信号量仅维护一个计数 。 许可的数目是固定的, 由此限制了通过的线程数量 。 其他线程可以通过调用 release释放许可。 而且 , 许可不是二必须由获取它的线程释放。 事实上 , 任何线程都可以释放任意数目的许可...原创 2018-05-19 13:30:57 · 146 阅读 · 0 评论 -
线程管理10,11,12
Java并发 API里有个有趣的方法是把线程分组。这个方法允许我们按线程组作为一个单位来处理。例如,你有一些线程做着同样的任务,你想控制他们,无论多少线程还在运行,他们的状态会被一个call 中断。 Java 提供 ThreadGroup 类来组织线程。 ThreadGroup 对象可以由 Thread 对象组成和由另外的 ThreadGroup 对象组成,生成线程树结构。 在这个指南中, 我...原创 2019-07-28 10:41:55 · 125 阅读 · 0 评论