秋过冬漫长

没有比脚更长的路,走过去,前面是个天!


  • 首页

  • 归档

  • 标签

  • 搜索

同步工具类

发表于 2017-04-30 | 分类于 Java |

内容摘要

这里主要介绍了java5中线程锁技术以外的其他同步工具,首先介绍Semaphore:一个计数信号量。用于控制同时访问资源的线程个数,CyclicBarrier同步辅助类:从字面意思看是路障,这里用于线程之间的相互等待,到达某点后,继续向下执行。CountDownLatch同步辅助类:在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。犹如倒计时计数器,然后是Exchanger:实现两个对象之间数据交换,可阻塞队列:ArrayBlockingQueue,通过阻塞队列间的通信来演示其作用,最后介绍了几个同步集合。

阅读全文 »

使用JDK5中同步技术的3个面试题

发表于 2017-04-30 | 分类于 Java |

第一题

现有的程序代码模拟产生了16个日志对象,并且需要运行16秒才能打印完这些日志,请在程序中增加4个线程去调用parseLog()方法来分头打印这16个日志对象,程序只需要运行4秒即可打印完这些日志对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Test {
public static void main(String[] args){
System.out.println("begin:"+(System.currentTimeMillis()/1000));
/*模拟处理16行日志,下面的代码产生了16个日志对象,当前代码需要运行16秒才能打印完这些日志。
修改程序代码,开四个线程让这16个对象在4秒钟打完。
*/
for(int i=0;i<16;i++){ //这行代码不能改动
final String log = ""+(i+1); //这行代码不能改动
{
Test.parseLog(log);
}
}
}
//parseLog方法内部的代码不能改动
public static void parseLog(String log){
System.out.println(log+":"+(System.currentTimeMillis()/1000));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
阅读全文 »

线程池

发表于 2017-04-30 | 分类于 Java |

这里首先介绍了java5中的并发的小工具包:java.util.concurrent.atomic,然后介绍了线程池的概念,对使用java5的方式创建不同形式的线程进行了演示,之后介绍了两个 对象:Callable和Future,用于获取线程执行后的结果,对于线程锁技术则在另外一篇文章中介绍。

Java5中的线程并发库都在java.util.concurrent包及子包中

1. Executor类的继承结构

ThreadPoolExecutor

Executor是线程池的顶级接口,只有一个执行任务的方法execute()

ExecutorService是Executor的子接口,该接口中包含了线程池常用的一些方法

方法 功能描述
execute() 执行任务
shutdown() 调用后不再接收新任务,如果里面有任务,就执行完
shutdownNow() 调用后不再接受新任务,如果有等待任务,移出队列;有正在执行的,尝试停止之
isShutdown() 判断线程池是否关闭
isTerminated() 判断线程池中任务是否执行完成
submit() 提交任务
invokeAll() 执行一组任务
阅读全文 »

线程范围内共享数据

发表于 2017-04-30 | 分类于 Java |

笔记摘要

所谓线程范围内共享数据,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据,API中为我们提供了一个操作线程范围内共享数据的类ThreadLocal,对于线程范围内共享数据的应用,在ThreadLocal的应用场景中进行了介绍,然后主要对它的使用进行讲解,演示了由单一数据的共享到将多个数据封装到一个对象中,然后进行共享。在开始先用一个Map集合简单实现线程范围内数据的共享

阅读全文 »

定时器、互斥、同步通信技术

发表于 2017-04-30 | 分类于 Java |

笔记摘要

这里分析了多线程的一些细节问题,并介绍了传统定时器的创建,同时实现了根据自己的调度计划的自定义定时器,对于传统互斥技术中发现的内部类问题,进行了分析,最后对于同步通信技术,是重点,分析了如何处理类似的问题,如何设计能够更加清晰简单,体现了高内聚和程序的健壮性

阅读全文 »
1…131415…17
JackChan

JackChan

生活不止眼前的苟且,还有诗和远方!

84 日志
11 分类
49 标签
GitHub GitBook 微博 CSDN
友情链接
  • 郭霖
  • 鸿洋
  • 张帅
  • 极客导航
© 2017 JackChan
由 Hexo 强力驱动
主题 - NexT.Pisces