
并发编程的艺术读书笔记
libaobaoaini
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
volatile关键字
关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量的访问均需要 从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问 的可见性。 举个例子,定义一个表示程序是否运行的成员变量boolean on=true,那么另一个线程可能对它执行关闭动作(on=false),这里涉及多个线程对变量的访问,因此需要将其定义成为 volati原创 2017-07-30 16:05:13 · 175 阅读 · 0 评论 -
wait() 和 notify()
等待/通知(wait/notify)的相关方法是任意Java对象都具备的,因为这些方法被定义在所有对象的超类 java.lang.Object上。/** * wait and notify */ package com.lbbywyt.concurrent;import java.text.SimpleDateFormat; import java.util.Date; import java.原创 2017-07-30 16:33:43 · 243 阅读 · 0 评论 -
Thread.join()的使用
如果一个线程A执行了B.join()语句,其含义是:当前线程A等待B线程终止之后才从B.join()返回。线程Thread除了提供join()方法之外,还提供了join(long millis)和join(longmillis,int nanos)两个具备超时特性的方法。这两个超时方法表示,如果线程thread在给定的超时时间里没有终止,那么将会从该超时方法中返回。/** *Thread.join原创 2017-07-30 17:03:12 · 284 阅读 · 0 评论 -
ThreadLocal的使用
当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本. 如下代码所示:/** * ThreadLocal的使用 */ package com.lbbywyt.concurrent;/** * @author libaobao * */ public class Th原创 2017-07-30 19:10:13 · 274 阅读 · 0 评论 -
一个简单的数据库连接池示例
一个简单的数据库连接池, 即一个通过构造函数初始化连接的最大上限,并通过一个双向队列来维护连接,调用方需要先调用fetchConnection(long)方法来指定在多少毫秒内超时获取连接,连接使用完成后,需要调用releaseConnection(Connection)方法将连接放回线程池,连接池的代码实例如下:/** * 简易连接池 */ package com.lbbywyt.concur原创 2017-07-31 20:24:49 · 1040 阅读 · 0 评论 -
一个简单的线程池实现
对于服务端的程序,经常面对的是客户端传入的短小(执行时间短、工作内容较为单一)任务,需要服务端快速处理并返回结果。如果服务端每次接受到一个任务,创建一个线程,然后进行执行,当面对成千上万的任务递交进服务器,那么将会创建数以万记的线程,大量线程的创建,消亡和上下文切换很容易就拖垮了服务。 线程池技术能够很好地解决这个问题,它预先创建了若干数量的线程,并且不能由用户直接对线程的创建进行控制,在这个原创 2017-07-31 21:42:24 · 263 阅读 · 0 评论