今天看了下java官网上关于concurrency库的教程,了解了下基本知识,在此记录下。
线程池
concurrency库中最重要的概念当然是线程池,java中线程池是封闭在Executor接口的实现中的。当我们想执行新的线程中,传统的方法是
new Thread(r).start()
但线程的创建与销毁会造成一定的资源与时间的消耗,设想一下在一个web服务器,如果对每一个新进来的请求都创建一个线程来处理,这样当线程一多,其调试、创建及其本身占用的资源会很严重,甚至有可能导致系统崩溃,利用线程池来管理线程则可以避免这种结果。
在java concurrency中提供了新的接口来供用户执行线程,主要包括如下三个:
Executor
ExecutorService
ScheduledExecutorService
而线程池则被封闭在这三个接口的实现里,根据这三个接口提供的不同的工厂方法可以创建不同的线程池。
Executor提供了一个execute方法来执行一个Runnable对象;ExecutorService则在此基础上提供了submit方法,此方法返回一个Future对象,用以监控线程状态并获得线程执行的结果;ScheduledExecutorService则提供了scheduleAtFixedRate等方法来重复执行某一个任务。
其它
除线程池之外还扩充了集合框架如BlockingQueue,ConcurrentMap等 ,并提供了Lock类来显示地添加锁。另外一个有趣的是其提供的原子变量。
假设我们有一个Counter类,为了保证其线程间同步,我们一般会这样写
class SynchronizedCounter {
private int c = 0;
public synchronized void increment() {
c++;
}
public synchronized void decrement() {
c--;
}
public synchronized int value() {
return c;
}
}
有了原子变量 后,我们可以这样写
import java.util.concurrent.atomic.AtomicInteger;
class AtomicCounter {
private AtomicInteger c = new AtomicInteger(0);
public void increment() {
c.incrementAndGet();
}
public void decrement() {
c.decrementAndGet();
}
public int value() {
return c.get();
}
}
至于其它高级的特性如Fork/Join框架等,可以参考其它的资料。
分享到:
相关推荐
《Java Concurrency in Practice》是Java并发编程领域的一本经典著作,由Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowles和Doug Lea等专家共同编写。这本书深入探讨了Java平台上的多线程和并发编程,旨在...
总的来说,《Java Concurrency In Practice》和Guava库为我们提供了丰富的理论知识和实践经验,通过深入学习和实践,我们可以构建出高效、可靠的并发应用程序。在实际工作中,我们需要不断探索、理解和运用这些工具...
《Java Concurrency in Practice》是Java并发编程领域的一本经典著作,由Brian Goetz、Tim Peierls、Joshua Bloch、Joe Bowbeer、David Holmes和Doug Lea合著,国内有热心人士进行了中文翻译,使得更多的中国开发者...
### Java并发实践——核心知识点概览 #### 一、引言 《Java Concurrency In Practice...通过深入学习这些内容,开发者可以更好地掌握Java并发编程的基本原理和最佳实践,从而构建出高效、稳定且易于维护的多线程应用。
首先,"Java Concurrency in Practice"是Java并发编程的经典之作,由Brian Goetz、Tim Peierls、Joshua Bloch、David Holmes和Doug Lea合著。这本书提供了一套实用的指导原则、设计模式和最佳实践,帮助Java开发者...
java_concurrency_in_practice.pdf jcip-examples-src.jar jcip-annotations-src.jar 英文版是高清晰的,实战和实践都是同一帮人对英文版书的翻译,网传实战的翻译质量更好,实战是2012年出版的,应该是对前一版实践...
因此,《Java并发编程实践》不仅适用于高级用户,也适合所有Java开发者阅读学习。 #### 专业知识点 ##### 1. 并发基础 - **并发与并行**:并发是指多个任务同时发生,而并行是指这些任务实际上同时执行。理解这...
### Java Concurrency Framework 的介绍 #### 一、概述 本文档由 David Holmes 撰写,旨在为初学者提供一个关于 Java Concurrency Framework 的简单介绍。对于那些希望快速掌握 Java 并发编程基础概念的学习者来说...
学习java多线程必读之书。书中列举多种多线程编程的反模式,并深入讲解了JDK5中current库的用法,堪称经典!Java Concurrency In Practice PDF版本和htm版。正规PDF版本的
这里的"java_concurrency_in_practice_source"源代码正是书中实例的实现,它涵盖了Java多线程编程中的关键概念和技术。 1. **线程基础**:Java中创建线程有两种方式,一是通过`Thread`类的子类,二是实现`Runnable`...
《Java Concurrency in Practice》是Java并发编程领域的一本经典著作,由Brian Goetz、Tim Peierls、Joshua Bloch、David Holmes和Doug Lea等多位Java并发领域的专家共同编写。这本书深入浅出地讲解了Java编程中的多...
### 深入浅出Java_Concurrency #### J.U.C的整体认识 Java的并发编程模型在J.U.C(`java.util.concurrent`)包中得到了全面的展现,这不仅仅是Java语言本身的一大亮点,更是多线程编程领域的重要组成部分。本文...
《Java并发编程之美》学习笔记 《Java concurrency programming》learning note
通过学习《Java Concurrency in Practice》,开发者能够对Java并发编程有全面而深入的理解,从而编写出高效、稳定且易于维护的并发程序。这本书的CHM版本包含了丰富的示例和实践经验,是Java并发编程领域的宝贵资源...
通过对《Java Concurrency in Practice》的源码进行学习和分析,我们可以深入理解Java并发编程的核心原理,提升在实际项目中处理并发问题的能力。同时,这也有助于我们更好地利用Java提供的并发工具和框架,编写出...
结合`java-concurrency-core-learning`这个文件名,我们可以推测这可能是一个关于Java并发核心概念的学习资料。学习这个主题,你可以深入理解Java并发编程的原理,包括线程安全的数据结构、锁机制、并发容器如...
通过阅读和学习《Java Concurrency.chm》这份资料,开发者能够掌握Java并发编程的基本原理、工具和最佳实践,从而在实际项目中编写出高效、可靠的并发代码。无论是对于提升个人技能,还是解决复杂的并发问题,这本书...