线程安全集合
1.阻塞队列:使用生产者消费者的理论完成线程操作
方法
add 添加一个元素 如果队列满,抛出异常
element 返回队列的头元素 如果队列空,抛异常
offer 添加一个元素并返回true 如果队列满,返回false
peek 返回队列的头元素 如果队列空,返回false
poll 移出并返回队列的头元素 如果队列空,返回null
put 添加一个元素 如果队列满,则阻塞
remove 移出并返回头元素 队列空,抛异常
take 移出并返回头元素 如果空,则阻塞
如果队列当作线程管理工具来使用,将用到put和take方法
linkedBlockingQueue的容量是没有边界的
ArrayBlockingQueue在构造是需要制定r哦n量,并且由一个可选的参数来制定是否需要公平性。
PriorityBlockingQueue是一个带优先级的队列,没有容量上线,如果队列为空,取元素的操作会阻塞
2.concurrent包提供了映像、有序集和队列的高效实现
1.ConcurrentHashMap
2.ConcurrentSkipListMap
3.ConcurrentSkipListSet
4.ConcurrentLinkedQueue
构建一个新的线程是有一定代价的,因为设计与操作系统的交互。如果程序中创建了大量的声明期很短的线程,应该使用线程池。
另一个使用线程池的理由是减少并发线程树木。创建大量线程会大大降低性能
使用连接池时应该做的事:
1.调用Executors类中静态的方法newCachedThreadPool或newFixedThreadPool
2.调用submit提交runnable或callable对象
3.如果想要取消一个任务,或如果提交callable对象,那就要保存好返回的future对象
4.当不再提交任何任务时,调用shutdown
Callable与Future
Runnable封装了一个异步运行的任务,可以把它想像称为一个没有参数和返回值的异步方法
Callable与Runnable类似,但是有返回值。Callable接口时一个参数化的类型,只有一个方法call.
Future保存异步计算的结果。可以启动一个计算,将Future对象交给某个线程,然后忘掉它
Future对象的所有者再结果计算好之后就可以获得它
分享到:
相关推荐
java线程 线程 教程 java线程教程 java线程学习资料 本教程有什么内容? 本教程研究了线程的基础知识— 线程是什么、线程为什么有用以及怎么开始编写使用线程的简单 程序。 我们还将研究更复杂的、使用线程的应用...
本书的新版本展示了如何利用Java线程工具的全部优势,并介绍了JDK 2线程接口中的最新变化。你将学习如何使用线程来提高效率,如何有效地使用它们,以及如何避免常见的错误。本书讨论了死锁、竞态条件以及饥饿等问题...
JAVA多线程学习,提高JAVA性能,多线程并列. JAVA高级学习内容。
Java 线程的学习和使用Java 线程的学习和使用
java线程学习笔记
附带JAVA线程源代码,从代码中分析和学习java线程。
Java线程:概念与原理 2 一、操作系统中线程和进程的概念 2 二、Java中的线程 3 三、Java中关于线程的名词解释 3 四、线程的状态转换和生命周期 4 Java线程:创建与启动 7 Java线程:线程名称的设定及获取 10 Java...
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-...
Java线程模块Java线程之秒表新手学习Java线程模块时,利用Java中设置线程的暂停间隔,做的简易秒表
很好的线程学习资料.。含有部分源代码。
java线程.pdf java 学习java
主要是结合课本和视频学习了一下java多线程的用法,这个专利适合于初学者学习多线程知识。
NULL 博文链接:https://ralf-realman.iteye.com/blog/417416
Java中的多线程学习总结Java中的多线程学习总结
Java多线程是一块重要的内容,李兴华讲解的Java是一个很好的资源
java学习笔记2(多线程)java学习笔记2(多线程)
Java线程学习好资料,JAVA多线程。
java多线程学习java多线程学习
java多线程学习-ftp上传
java多线程,来自java编程思想!内容很详细,适合于初学者。