synchronized的缺陷   我们知道,可以利用synchronized关键字来实现共享资源的互斥访问. Java 5在java.util.concurrent.locks包下提供了另一种来实现线程的同步访问,那就是Lock.既然有了synchronized来 实现线程同步,Java为什么还需要提供Lock呢? synchronized是Java的一个关键字,当我们使用synchronized来修饰方法或代码块时,线程必须先获得对应的锁才能执行该段代码.而其他线程只能一直等待,直到当前线程…
synchronized的缺陷   我们知道,可以利用synchronized关键字来实现共享资源的互斥访问.Java 5在java.util.concurrent.locks包下提供了另一种来实现线程的同步访问,那就是Lock.既然有了synchronized来实现线程同步,Java为什么还需要提供Lock呢? synchronized是Java的一个关键字,当我们使用synchronized来修饰方法或代码块时,线程必须先获得对应的锁才能执行该段代码.而其他线程只能一直等待,直到当前线程释放…
java.util.concurrent包分成了三个部分,分别是java.util.concurrent.java.util.concurrent.atomic和java.util.concurrent.lock.内容涵盖了并发集合类.线程池机制.同步互斥机制.线程安全的变量更新工具类.锁等等常用工具. 搜索资源:http://blog.csdn.net/zhgflx/article/details/4485848 AtomicInteger: Java的多线程编程模型5--从AtomicInt…
在Java中,使用线程来异步执行任务.Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源.同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃. Java线程既是工作单元,也是执行单元.从JDK1.5开始,把工作单元与执行机制分离开来.工作单元包括Runnable 和 Callable,而执行机制由Executor框架提供. Executor框架简介 Executor框架的两级调度模型 在Ho…
     public interface Callable<V>    返回结果并且可能抛出异常的任务.实现者定义了一个不带任何参数的叫做 call 的方法      public interface Future<V>      Future 表示异步计算的结果.计算完成后只能使用 get 方法来获取结果 1.线程处理返回结果 一般开发中,使用多线程,最常见的就是:1.实现Runnable接口:2.继承Thread类. 但是run方法是没有返回结果,很难满足我们的需求.这时,常…
Thread作为线程的抽象,Thread的实例用于描述线程,对线程的操纵,就是对Thread实例对象的管理与控制. 创建一个线程这个问题,也就转换为如何构造一个正确的Thread对象. 构造方法列表 构造方法核心 如前面两个图所示,Thread共有8个构造方法 而且所有的构造方法都依赖于init方法     private void init(ThreadGroup g, Runnable target, String name,long stackSize) 所以换一个角度思考,可以认为只有一…
多线程和java.util.concurrent并发包 转载:…
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作的方法. 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(JavaCollectionFramework). Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这…
java线程池的使用与详解 [转载]本文转载自两篇博文:  1.Java并发编程:线程池的使用:http://www.cnblogs.com/dolphin0520/p/3932921.html     这篇文章通过源码详细介绍了java线程池的主要接口和类方法,十分清晰,值得拜读 2.Java线程池使用说明:http://automaticthoughts.iteye.com/blog/1612388    这篇文章主要介绍了线程池的使用,我觉得最经典的对于阻塞队列的使用讲解,非常实用    …
Java多线程--JDK并发包(2) 线程池 在使用线程池后,创建线程变成了从线程池里获得空闲线程,关闭线程变成了将线程归坏给线程池. JDK有一套Executor框架,大概包括Executor.ExecutorService.AbstractExeccutorService.ThreadPoolExecutor.Executors等成员,位于java.util.concurrent包下.它们之间的关系如下: Executor是顶层的接口,ExecutorService接口继承了它,Abstrc…