龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

JAVA多线程和并发基础面试问答(翻译)(4)

时间:2014-09-03 02:56来源:网络整理 作者:网络 点击:
分享到:
阅读这篇文章了解 如何使用阻塞队列实现生产者-消费者问题。 5. 什么是Callable和Future Java 5在concurrency包中引入了java.util.concurrent.Callable 接口,它和Runnab

  阅读这篇文章了解如何使用阻塞队列实现生产者-消费者问题。

  5. 什么是Callable和Future?

  Java 5在concurrency包中引入了java.util.concurrent.Callable 接口,它和Runnable接口很相似,但它可以返回一个对象或者抛出一个异常。

  Callable接口使用泛型去定义它的返回类型。Executors类提供了一些有用的方法去在线程池中执行Callable内的任务。由于Callable任务是并行的,我们必须等待它返回的结果。java.util.concurrent.Future对象为我们解决了这个问题。在线程池提交Callable任务后返回了一个Future对象,使用它我们可以知道Callable任务的状态和得到Callable返回的执行结果。Future提供了get()方法让我们可以等待Callable结束并获取它的执行结果。

  阅读这篇文章了解更多关于Callable,Future的例子

  6. 什么是FutureTask?

  FutureTask是Future的一个基础实现,我们可以将它同Executors使用处理异步任务。通常我们不需要使用FutureTask类,单当我们打算重写Future接口的一些方法并保持原来基础的实现是,它就变得非常有用。我们可以仅仅继承于它并重写我们需要的方法。阅读Java FutureTask例子,学习如何使用它。

  7.什么是并发容器的实现?

  Java集合类都是快速失败的,这就意味着当集合被改变且一个线程在使用迭代器遍历集合的时候,迭代器的next()方法将抛出ConcurrentModificationException异常。

  并发容器支持并发的遍历和并发的更新。

  主要的类有ConcurrentHashMap, CopyOnWriteArrayList 和CopyOnWriteArraySet,阅读这篇文章了解如何避免ConcurrentModificationException

  8. Executors类是什么?

  Executors为Executor,ExecutorService,ScheduledExecutorService,ThreadFactory和Callable类提供了一些工具方法。

  Executors可以用于方便的创建线程池。

  原文:journaldev.com 译文:ifeve 译者:郑旭东 

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接