(二十一)java多线程之Executors

2017-05-07
阅读 2 分钟
1.7k
newFixedThreadPool(int nThreads) 创建一个指定线程数量的线程池t nThreads, ThreadFactory threadFactory)` 创建一个可以自定义的线程工厂的指定线程数量的线程池

(二十)java多线程之ScheduledThreadPoolExecutor

2017-05-06
阅读 2 分钟
2.8k
java 提供的线程池还有一个,那就是任务调度线程池ScheduledThreadPoolExecutor,它其实是ThreadPoolExecutor的一个子类.

(十九)java多线程之ForkJoinPool

2017-05-05
阅读 10 分钟
4.4k
ForkJoinPool 这个类实现了ExecutorService接口和工作窃取算法(Work-Stealing Algorithm).它管理工作者线程,并提供任务的状态信息,以及任务的执行信息

(十八)java多线程之Callable Future

2017-05-04
阅读 4 分钟
2.9k
前面我们讲了那么多有关线程的知识.不知道读者有没有想过这么一个问题,如果有这么一个比较耗时的任务,必须使用线程来执行,但是在这个任务执行完之后,我需要得到这个线程的返回值.以目前我们学到的知识,具体实现,我这里不说,大家自行发挥.除此之外,如果线程发生了非运行时异常,我们在主线程就会收到一堆错误信息.还有我们...

(十七)java多线程之ThreadPoolExecutor

2017-04-30
阅读 7 分钟
9.6k
在之前的例子,我们要创建多个线程处理一批任务的时候.我是通过创建线程数组,或者使用线程集合来管理的.但是这样做不太好,因为这些线程没有被重复利用.所以这里要引入线程池,今天我们就讲线程池执行器ThreadPoolExecutor.

(十六)java多线程之优先队列PriorityBlockingQueue

2017-04-29
阅读 3 分钟
4.5k
本人邮箱: <kco1989@qq.com>欢迎转载,转载请注明网址 [链接]github: [链接]代码已经全部托管github有需要的同学自行下载 引言 在银行排队办理业务,通常会有一个VIP通道,让一些有VIP贵宾卡的优先办理业务,而不需要排队.这就是我们今天要讲的优先队列. 例子 假设在这么一个场景下,银行开始办理业务之前,已经来了20个...

(十五)java多线程之并发集合ArrayBlockingQueue

2017-04-29
阅读 5 分钟
4.4k
做java的同学们或多或少的接触过Java集合框架.在java集合框架中,大多的集合类是线程不安全的.比如我们常用的ArrayList等等.我们写一个例子看,为什么说ArrayList是不安全的.

(十三)java多线程之Timer

2017-04-28
阅读 6 分钟
3.5k
本人邮箱: <kco1989@qq.com>欢迎转载,转载请注明网址 [链接]github: [链接]代码已经全部托管github有需要的同学自行下载 引言 同步工具都讲的差不多了,今天我们换一下口味.讲一下定时任务Timer吧. 理论 schedule(TimerTask task, long delay) 延时delayms后执行定时任务task schedule(TimerTask task, Date time) ...

(十二)java多线程之Exchanger

2017-04-27
阅读 6 分钟
3.8k
exchange(V x) 跟另外一个线程交换数据x,如果另外一个线程的数据准备好,那么当前线程会立刻返回,并获得另外一个线程的数据;否则当前线程会进入等待状态

(十一)java多线程之Phaser

2017-04-26
阅读 11 分钟
3.9k
java7中引入了一种新的可重复使用的同步屏障,称为移相器Phaser.Phaser拥有与CyclicBarrier和CountDownLatch类似的功劳.但是这个类提供了更加灵活的应用.CountDownLatch和CyclicBarrier都是只适用于固定数量的参与者.移相器适用于可变数目的屏障,在这个意义上,可以在任何时间注册新的参与者.并且在抵达屏障是可以注销已经...

(十)java多线程之CountDownLatch

2017-04-25
阅读 3 分钟
4.2k
CountDownLatch在初始化的时候需要一个count参数.调用await()的线程会一直等待,直到其他线程调用countDown使count清空为0.通常所有等待中的线程会被释放并且后面继续调用await的线程会立即返回.这个是一次性操作,count不能被重置的.如果想要被重置的话,就可以参考(九)java多线程之CyclicBarrier

用并查集(find-union)实现迷宫算法以及最短路径求解

2017-04-24
阅读 9 分钟
6.6k
有一种算法就做并查集(find-union).什么意思呢?比如现在有零散的甲乙丙丁戊五个人.他们之间刚开始互相不认识.用代码解释就是find(person1, person2) == false,之后在某一次聚合中,甲认识了乙,乙认识了丙,丙认识了戊和丁等等,那么就可以用代码解释如下.

(九)java多线程之CyclicBarrier

2017-04-24
阅读 6 分钟
3.3k
一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。

(八)java多线程之Semaphore

2017-04-23
阅读 6 分钟
2.9k
Semaphore:一个可计数的信号量。一般,一个semaphore 信号量是一组许可证。如果必要,那个每次acquire获取许可都是阻塞的,直接一个许可证是可用的,并获取到。每次release释放,都会增加一个许可证,潜在的,也会释放一个阻塞请求。然而。并非每次许可对象都可以被使用的,这个Semaphore信号量只保存几个可用的许可证和...

(七)java多线程之Condition

2017-04-22
阅读 7 分钟
4.7k
在写(五)java多线程之Lock类时,我们暂时忽略掉Lock的一个方法,那就是Lock.newCondition(),这个方法返回一个Condition,现在我们这章就重点讲这个东东是什么,以及怎么使用.

(六)java多线程之ReadWriteLock

2017-04-21
阅读 22 分钟
2.2k
上一篇讲到了ReentrantLock,在同一个时间点,只能用一个线程能够访问共享资源.今天我们来讲一下读写锁ReadWriteLock,读写锁提供了在同一个时间点,可以有多个线程共享去读取共享资源,当只有有一个线程去写共享资源.

(五)java多线程之Lock类

2017-04-20
阅读 7 分钟
1.6k
java.util.concurrent.locks.Lock: Lock主要提供更多锁的特性让线程能获取同步方法或同步块的执行.它们提供更多的灵活的结果,能拥有不多的属性,并且可以配合Condition类提供多样的组合.一个Lock是控制多线程去访问一个共享的资源.一般来说,一个lock会提供更高级的方法去访问共享资源:比如在某一个时间点,只能有一个线程...

使用工厂方法模式实现各种不同分润规则

2017-04-19
阅读 7 分钟
2.4k
在上一篇文章中使用简单工厂编写不同的分润规则遗留着一个问题,那就是如果要新增分润规则,则需要修改原来的类.也就是代码没有完全解耦.因此在这一篇中,我将分润规则的设计改为抽象工厂模式来编写.以解决上次遗留的问题.

使用简单工厂编写不同的分润规则

2017-04-19
阅读 8 分钟
2.5k
本人邮箱: <kco1989@qq.com>欢迎转载,转载请注明网址 [链接]github: [链接]代码已经全部托管github有需要的同学自行下载 引言 在工作项目中遇到以下一个问题.公司有一款产品,遇到给不同代理商代理售卖.但是不同的代理商分润的方式各自不同.有以下几个中分润方式. 每笔固定收益1元,则填写代理商收益1.00 每笔收益...

(二)java多线程之synchronized

2017-04-19
阅读 5 分钟
1.9k
现在,让我们来考虑一个问题,如果要让多个线程来访问同一份数据,会发生什么现象呢?比如12306的火车售票系统,比如银行的存取款系统等等.都可以会出现多线程访问同一个数据的情况.让我们先模拟写一个售票系统.

(十四)java多线程之死锁以及解决方案

2017-04-18
阅读 6 分钟
3k
多线程如果设计的不合理的话,很可能就会出现死锁.当两个或者多个线程同事想要去获取共享资源的锁时,但每个线程都要等其他线程把他们各自的锁给释放,才能继续运行,这就是死锁.出现死锁必须具备以下几点

(四)java多线程之同步基础ThreadLocal

2017-04-18
阅读 5 分钟
2.1k
之前我们讲到都是多线程共享数据.那么有没有某一个共享的变量,在这变量里面,每个线程都能拥有自己的属性呢?比如说,去旅店开房休息.那么这个旅店就是一个共享的数据,但是每个人开的房间是不一样的.这个要怎么做呢?这里我先试着写一些

(三)java多线程之wait notify notifyAll

2017-04-18
阅读 14 分钟
1.4k
今天我打算讲一下Object.wait,Object.notify,Object.notifyAll这三个方法. 首先我们查看一下api看看,官方api对这几个方法的介绍.

(一)java多线程之Thread

2017-04-18
阅读 7 分钟
3.5k
学习java线程的开发者,首先遇到的第一个类就是Thread,通过使用Thread类,我们就可以启动,停止,中断一个线程. 在同一个时间片里, 可能会有多个线程在执行, 每个线程都拥有它自己的方法调用堆栈, 参数和变量.每个app至少会有一个线程--主线程(main thread).