![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jdk1.5 并发
文章平均质量分 81
kun81
java,snmp,网络管理
展开
-
任务管理 (二)
定制 ThreadPoolExecutorExecutors 中的 newFixedThreadPool 和 newCachedThreadPool 工厂方法返回的 Executor 是类 ThreadPoolExecutor 的实例,是高度可定制的。通过使用包含 ThreadFactory 变量的工厂方法或构造函数的版本,可以定义池线程的创建。ThreadFactory 是工厂对象,其构造执行程序要使用的新线程。使用定制的线程工厂,创建的线程可以包含有用的线程名称,并且这些线程是守护线程,属于特定线程组或转载 2010-08-30 10:16:00 · 591 阅读 · 0 评论 -
Synchronizer类
Synchronizerjava.util.concurrent 中其他类别的有用的类也是同步工具。这组类相互协作,控制一个或多个线程的执行流。 Semaphore、CyclicBarrier、CountdownLatch 和 Exchanger 类都是同步工具的例子。每个类都有线程可以调用的方法,方法是否被阻塞取决于正在使用的特定同步工具的状态和规则。SemaphoreSemaphore 类实现标准 Dijkstra 计数信号。计数信号可以认为具有一定数量的许可权,该许可权可以获得或释放转载 2010-08-30 10:19:00 · 476 阅读 · 0 评论 -
低级别工具---锁定和原子
Lock 第 1 页(共5 页) Java 语言内置了锁定工具 —— synchronized 关键字。当线程获得监视器时(内置锁定),其他线程如果试图获得相同锁定,那么它们将被阻塞,直到第一个线程释放该锁定。同步还确保随后获得相同锁定的线 程可以看到之前的线程在具有该锁定时所修改的变量的值,从而确保如果类正确地同步了共享状态的访问权,那么线程将不会看到变量的“失效”值,这是缓存或编 译器优化的结果。 虽然同步没有什么问题,但它有一些限制,在一些高级应用程序中会造成不便。Lock 接转载 2010-08-30 10:22:00 · 432 阅读 · 0 评论 -
性能与可伸缩性
<br /> <br />性能与可伸缩性<br /><br /><br /><br /> <br /><br /> 虽然 java.util.concurrent 努力的首要目标是使编写正确、线程安全的类更加容易,但它还有一个次要目标,就是提供可伸缩性。可伸缩性与性能完全不同,实际上,可伸缩性有时要以性能为 代价来获得。 <br /> 性能是“可以快速执行此任务的程度”的评测。可伸缩性描述应用程序的吞吐量如何表现为它的工作量和可用计算资源增加。可伸缩的程序可以按比例使用更多的处 理器、内存或转载 2010-08-30 10:26:00 · 487 阅读 · 0 评论 -
线程安全集合
简介 JDK 1.2 中引入的 Collection 框架是一种表示对象集合的高度灵活的框架,它使用基本接口 List、Set 和 Map。通过 JDK 提供每个集合的多次实现(HashMap、Hashtable、TreeMap、WeakHashMap、HashSet、TreeSet、Vector、ArrayList、LinkedList 等等)。其中一些集合已经是线程安全的(Hashtable 和 Vector),通过同步的封 装工厂(Collections.synchronizedMap()转载 2010-08-30 09:59:00 · 1409 阅读 · 0 评论 -
并发的基础知识
<br /><br />什么是线程?<br /><br /><br /> 所有重要的操作系统都支持进程的概念 —— 独立运行的程序,在某种程度上相互隔离。 <br /> 线程有时称为 轻量级进程。与进程一样,它们拥有通过程序运行的独立的并发路径,并且每个线程都有自己的程序计数器,称为堆栈和本地变量。 然而,线程存在于进程中,它们与同一进程内的其他线程共享内存、文件句柄以及每进程状态。 <br /> 今天,几乎每个操作系统都支持线程,允许执行多个可独立调度的线程,以便共存于一个进程中。因为一个进程转载 2010-08-30 09:55:00 · 750 阅读 · 0 评论 -
任务管理 (一)
线程创建 线程最普遍的一个应用程序是创建一个或多个线程,以执行特定类型的任务。Timer 类创建线程来执行 TimerTask 对象,Swing 创建线程来处理 UI 事件。在这两种情况中,在单独线程中执行的任务都假定是短期的,这些线程是为了处理大量短期任务而存在的。 在其中每种情况中,这些线程一般都有非常简单的结构: while (true) { if (no tasks) wait for a task; execute the task; } 通过转载 2010-08-30 10:10:00 · 495 阅读 · 0 评论