首页/分类:多线程
2017-08-9 写了一篇文章

CountDownLatch的使用

CountDownLatch是并发包中可控制多个线程开启某个处理的类,CountDownLatch是并发包中可控制多个线程开启某个处理的类, 采用减计数的方式,每次调用countDown()方法减一,当计数减为0时释放所有等待的线程。调用await()方法只进行阻塞,对计数没任何影响。 CountDownLatch内部通过“共享锁”实现。在创建CountDownLatch时,需要传递一个int类型的count参数,该count参数为“锁状态”的初始值,该值表示着该“共享锁”可以同时被多少线程获取。当某个线程调用await()方法时,首先判断锁的状态是否处于可获取状态(其条件就是count是否为0,为0才可以获取),如果共享锁可获取则获取共享锁,否则一直处于等待直到获取为止。当线程调用countDown方法时,计数器count – 1。当在创建CountDownLatch时初始化的count参数,必须要有count线程调用countDown方法才会使计数器count等于0,锁才会...

2017-07-4 写了一篇文章

线程同步方法 synchronized

同步方法类 测试类   测试结果: Helllo main Helllo main Thread-1 x=1 ,y=1 i=0 Thread-0 x=1 ,y=1 i=0 Thread-0 x=2 ,y=2 i=1 Thread-1 x=2 ,y=2 i=1 Thread-1 x=3 ,y=3 i=2 Thread-0 x=3 ,y=3 i=2 Thread-1 x=4 ,y=4 i=3 Thread-0 x=4 ,y=4 i=3 从测试结果可以看出,Thread-0和Thread-1都完整的访问了共享资源,从代码的打印顺序上可以看出Thread-1访问完run()后,Thread-0才进入synchrinized run()进行数据操作。在Thread-1休眠的时间内,Thread-1也没有进入运行状态。直到Thread-0从synchronized run()方法中返回把锁交给Thread-1。

2017-07-2 写了一篇文章

Java 多线程处理日志信息

利用ConcurrentLinkedQueue队列以及多线程处理日志信息 日志处理启动器类 处理日志信息的类 创建多线程的类