上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页

2017年6月8日

摘要: 队列分为两类 阻塞队列 BlockingQueue提供如下两个支持阻塞的方法: (1)put(E e): 尝试把e元素放如BlockingQueue中,如果该队列的元素已满,则阻塞该线程。 (2)take(): 尝试从BlockingQueue的头部取出元素,如果该队列的元素已空,则阻塞该线程。 j 阅读全文
posted @ 2017-06-08 18:18 一只小蜗牛12138 阅读(245) 评论(0) 推荐(0) 编辑

2017年6月6日

摘要: 接下来的几篇博客会介绍下juc包下的相关数据结构 包含queue,list,map等 这篇文章主要模拟下阻塞队列。 下面是代码 阅读全文
posted @ 2017-06-06 18:06 一只小蜗牛12138 阅读(151) 评论(0) 推荐(0) 编辑

2017年6月5日

摘要: CyclicBarrier 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point) 然后一再执行 运行结果如下 在这里 需要说下和CountDownLatch的区别 CountDownLatch 阻塞的是 主线程 CyclicBarrier 阻塞 阅读全文
posted @ 2017-06-05 18:03 一只小蜗牛12138 阅读(160) 评论(0) 推荐(0) 编辑

2017年5月25日

摘要: CountDownLatch,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后, 计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务, 然后在闭锁上等待的线程就可以恢复执行任务。 应用场景:多个线程同时工作,然后其中几个可以随意并发执行,但有一个线程需要等其他线程工作结 阅读全文
posted @ 2017-05-25 18:45 一只小蜗牛12138 阅读(206) 评论(0) 推荐(0) 编辑

2017年5月16日

摘要: Semaphore叫做信号量 可以控制某个资源可被同时访问的个数, acquire() 获取一个许可,得到许可才能执行后面的代码,如果没有就等待。 release() 释放一个许可。 当信号量的只允许一个线程访问时,就变成了锁的功能。 下面代码演示 执行结果如下 每一秒钟只能允许一个线程执行。 阅读全文
posted @ 2017-05-16 18:59 一只小蜗牛12138 阅读(137) 评论(0) 推荐(0) 编辑

2017年5月14日

摘要: ReentrantLock类是可重入、互斥、实现了Lock接口的锁,它与使用synchronized方法和快具有相同的基本行为和语义,并且扩展了其能力。ReenreantLock类的常用方法有: ReentrantLock() : 创建一个ReentrantLock实例 ReentrantLock( 阅读全文
posted @ 2017-05-14 23:17 一只小蜗牛12138 阅读(161) 评论(0) 推荐(0) 编辑

2017年5月11日

摘要: 先看一个例子,AtomicInteger 实现的线程安全的累加器 AtomicInteger源码分析 下面通过AtomicInteger的源码来看一下是怎么在没有锁的情况下保证数据正确性。首先看一下incrementAndGet方法的实现 注意::valueOffset叫做 偏移量 我们知道valu 阅读全文
posted @ 2017-05-11 19:05 一只小蜗牛12138 阅读(166) 评论(0) 推荐(0) 编辑

2017年5月10日

摘要: wait()/ notify()/ notifyAll() 任何Object对象都可以作为这三个方法的主调,但是不推荐线程对象调用这些方法。 1使用wait()、notify()和notifyAll()时需要首先对调用对象加锁【必须使用在同步代码块】2调用wait()方法后,线程状态会从RUNNIN 阅读全文
posted @ 2017-05-10 17:48 一只小蜗牛12138 阅读(160) 评论(0) 推荐(0) 编辑

2017年5月9日

摘要: 先来看一个线程安全的例子 ,两个线程对count进行累加,共累加10万次。 随便运行多少次这个程序,都得不到正确的结果 200000 于是乎 引出今天的问题,线程安全问题。 怎么解决呢,有多种解决方法,现在来说2种, 第一种 在 Add 类的 run方法上 加synchronized 第二种 使用无 阅读全文
posted @ 2017-05-09 23:39 一只小蜗牛12138 阅读(130) 评论(0) 推荐(0) 编辑

2017年5月8日

摘要: 守护线程 执行一些非业务方法,比如gc。当全部都是守护线程的时候,jvm退出 线程优先级 设置线程优先级:setPriority(int priorityLevel)。参数priorityLevel范围在1-10之间,值越大优先级越高, 能被执行到的概率越大,但非优先执行。 sleep() 让当前的 阅读全文
posted @ 2017-05-08 18:27 一只小蜗牛12138 阅读(145) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页

导航