java7并发编程实战手册学习笔记
文章平均质量分 78
在奋斗的大道
程序发烧友
展开
-
java并发包学习系列:future模式
本文转载至:http://blog.csdn.net/a910626/article/details/51900972 future模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。当我们需要调用一个函数方法时,如果这个函数执行很慢,那么我们就要进行等待。但有时候我们可能并不着急着要结果。因此,我们可以让被调用者立即返回,让他在后台慢慢处理这个请求。对于调用者来说,则可转载 2017-06-02 09:09:52 · 420 阅读 · 0 评论 -
java并发包:生产者消费者模式
本文转载至:http://blog.csdn.net/a910626/article/details/51900974生产者消费者模式是一个经典的多线程设计模式,它为多线程间的协作提供了良好的解决方案。在生产者消费者模式中,通常有两类线程,即若干个生产者线程和若干个消费者线程。生产者线程足额提交用户请求,消费者线程负责具体处理生产者提交的任务。生产者和消费者之间则通过共享内存缓转载 2017-04-20 21:32:17 · 503 阅读 · 0 评论 -
Java线程:线程状态的转换
本文转载至:http://lavasoft.blog.51cto.com/62575/99153一. 线程状态类型1. 新建状态(New):新创建了一个线程对象。2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3. 运行状态(Running):就绪状态的线程获取了CPU转载 2017-04-16 03:48:41 · 302 阅读 · 0 评论 -
Java线程:线程栈模型与线程的变量
本文转载至:http://lavasoft.blog.51cto.com/62575/99152要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。 下面通过一个示例性的代码说明转载 2017-04-16 02:19:24 · 334 阅读 · 0 评论 -
Java线程:创建与启动
本文转载至:http://lavasoft.blog.51cto.com/62575/99151一、定义线程 1、扩展java.lang.Thread类。 此类中有个run()方法,应该注意其用法:public void run()如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则转载 2017-04-16 02:17:36 · 309 阅读 · 0 评论 -
java 线程:概念与原理
本文转载至:http://lavasoft.blog.51cto.com/62575/99150一、操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线转载 2017-04-16 01:59:44 · 259 阅读 · 0 评论 -
Java线程:并发协作-生产者消费者模型
本文转载至:http://lavasoft.blog.51cto.com/62575/221932Java线程:并发协作-生产者消费者模型 对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。转载 2017-04-19 10:18:40 · 369 阅读 · 0 评论 -
Java线程:线程的同步-同步块
本文转载至:http://lavasoft.blog.51cto.com/62575/221922Java线程:线程的同步-同步块 对于同步,除了同步方法外,还可以使用同步代码块,有时候同步代码块会带来比同步方法更好的效果。 追其同步的根本的目的,是控制竞争资源的正确的访问,因此只要在访问竞争资源的时候保证同一时刻只能一个线程访问即可,因此Java引入了同步代码快的策略,以提高转载 2017-04-19 10:18:22 · 309 阅读 · 0 评论 -
Java线程:线程的同步-同步方法
本文转载至:http://lavasoft.blog.51cto.com/62575/221914Java线程:线程的同步-同步方法 线程的同步是保证多线程安全访问竞争资源的一种手段。线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题?转载 2017-04-19 10:18:04 · 308 阅读 · 0 评论 -
Java线程:并发协作-死锁
本文转载至:http://lavasoft.blog.51cto.com/62575/222074Java线程:并发协作-死锁 线程发生死锁可能性很小,即使看似可能发生死锁的代码,在运行时发生死锁的可能性也是小之又小。 发生死锁的原因一般是两个对象的锁相互等待造成的。 在《Java线程:线程的同步与锁》一文中,简述死锁的概念与简单例子,但是所给的例子是不完整的,这里给出转载 2017-04-18 21:54:30 · 310 阅读 · 0 评论 -
java并发包:future模式
本文转载至:http://blog.csdn.net/a910626/article/details/51900972future模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。当我们需要调用一个函数方法时,如果这个函数执行很慢,那么我们就要进行等待。但有时候我们可能并不着急着要结果。因此,我们可以让被调用者立即返回,让他在后台慢慢处理这个请求。对于调用者来说,则可以先处转载 2017-04-20 21:32:43 · 791 阅读 · 0 评论 -
java并发包:jdk并发容器
同步容器同步容器可以简单地理解为通过synchronized来实现同步的容器,如果有多个线程调用同步容器的方法,它们将会串行执行。同步容器将它们的状态封装起来,并对每一个公有方法进行同步。主要包括:VectorStackHashTableCollections.synchronized方法生成,例如: Collectinons.synchronizedList()转载 2017-04-20 21:33:11 · 393 阅读 · 0 评论 -
java并发包:fork/join
本文转载至:http://blog.csdn.net/a910626/article/details/51900967Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子转载 2017-04-20 21:33:32 · 584 阅读 · 0 评论 -
java 多线程 总结三
本文转载至:http://blog.csdn.net/vking_wang/article/details/99520631、synchronized把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility)。1.1 原子性原子性意味着个时刻,只有一个线程能够执行一段代码,转载 2017-06-02 02:08:25 · 346 阅读 · 0 评论 -
java 多线程 总结二
java 类库提供线程池简介:newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool :创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool: 创建一个定长线程池,支持定时及周期性任务执行。原创 2017-06-02 01:57:11 · 357 阅读 · 0 评论 -
java 多线程 总结一
首先讲一下进程和线程的区别: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。 多进程是指操作系统能同时运行多个任务(程序)。 多原创 2017-06-02 01:43:31 · 512 阅读 · 0 评论 -
java并发包:概论
本文转载至:http://blog.csdn.net/a910626/article/details/51900917为什么要学习并发“今天和一哥们聊天,聊着聊着聊到钱的方面,当时我就说,全世界60亿人,要是每人给我一块钱那不就发财了啊.哥们立马用鄙视的眼神看我,全世界60亿人,平均一人给你钱需要2秒,也就是120亿秒,2亿分钟,330多万个小时,14万天,380年.恭喜你转载 2017-04-20 21:35:46 · 538 阅读 · 0 评论 -
java并发包:重入锁与Condition条件
本文转载至:http://blog.csdn.net/a910626/article/details/51900941重入锁 这里介绍一下synchronized、wait、notify方法的替代品(或者说是增强版)-重入锁。重入锁是可以完全替代以上的内容的。并且重入锁的性能是远高于synchronized的,但是jdk6.0开始,jdk对synchronized做了大量转载 2017-04-20 21:35:21 · 965 阅读 · 0 评论 -
java并发包:信号量
本文转载至:http://blog.csdn.net/a910626/article/details/51900947信号量为多线程协作提供了更为强大的控制方法。广义上说,信号量是对锁的扩展。无论是内部锁synchronized还是重入锁ReentrantLock,一次都只允许一个线程访问一个资源,而信号量却可以指定多个线程,同时访问某一个资源。信号量主要提供了一下构造函数:Semap转载 2017-04-20 21:34:57 · 494 阅读 · 0 评论 -
java并发包:读写锁
本文转载至:http://blog.csdn.net/a910626/article/details/51900954ReadWriteLock是jdk5中提供的读写分离锁。读写分离锁可以有效的帮助减少锁竞争,以提升性能。用锁分离的机制来提升性能非常容易理解,比如线程A1,A2,A3进行写操作,B1,B2,B3进行读操作,如果使用重入锁或者内部锁,则理论上说所有读之间、读和写之间、写和转载 2017-04-20 21:34:37 · 653 阅读 · 0 评论 -
java并发包:几个多线程控制工具类
本文转载至:http://blog.csdn.net/a910626/article/details/51900962倒计时器 CountDownLatch Java的concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。转载 2017-04-20 21:34:21 · 2168 阅读 · 0 评论 -
java并发包:线程复用之线程池
本文转载至:http://blog.csdn.net/a910626/article/details/51900966什么是线程池频繁使用new Thread来创建线程的方式并不太好。因为每次new Thread新建和销毁对象性能较差,线程缺乏统一管理。好在Java提供了线程池,它能够有效的管理、调度线程,避免过多的资源消耗。优点如下:重用存在的线程,减少对象创建、转载 2017-04-20 21:33:55 · 843 阅读 · 0 评论 -
Java线程:volatile关键字
本文转载至:http://lavasoft.blog.51cto.com/62575/222076Java线程:volatile关键字 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。 谈及到volat转载 2017-04-18 21:54:05 · 309 阅读 · 0 评论 -
Java线程:新特征-线程池
本文转载至:http://lavasoft.blog.51cto.com/62575/222078Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内容全部在java.util转载 2017-04-18 21:53:23 · 297 阅读 · 0 评论 -
Java线程:线程的调度-让步
本文转载至:http://lavasoft.blog.51cto.com/62575/221811Java线程:线程的调度-让步 线程的让步含义就是使当前运行着线程让出CPU资源,但是然给谁不知道,仅仅是让出,线程状态回到可运行状态。 线程的让步使用Thread.yield()方法,yield() 为静态方法,功能是暂停当前正在执行的线程对象,并执行其他转载 2017-04-18 01:47:30 · 283 阅读 · 0 评论 -
Java线程:线程的调度-优先级
本文转载至:http://lavasoft.blog.51cto.com/62575/221801Java线程:线程的调度-优先级 与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。 线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。转载 2017-04-18 01:45:31 · 255 阅读 · 0 评论 -
Java线程:线程的调度-休眠
本文转载至:http://lavasoft.blog.51cto.com/62575/221790Java线程:线程的调度-休眠 Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。 这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制。 线程休眠的转载 2017-04-18 01:41:04 · 272 阅读 · 0 评论 -
Java线程:线程的交互
本文转载至:http://lavasoft.blog.51cto.com/62575/99157线程交互是比较复杂的问题,SCJP要求不很基础:给定一个场景,编写代码来恰当使用等待、通知和通知所有线程。 一、线程交互的基础知识 SCJP所要求的线程交互知识点需要从java.lang.Object的类的三个方法来学习: void noti转载 2017-04-18 01:40:20 · 393 阅读 · 0 评论 -
Java线程:线程的同步与锁
本文转载至:http://lavasoft.blog.51cto.com/62575/99155一、同步问题提出线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。public class Foo { private int x = 100;转载 2017-04-18 01:39:35 · 344 阅读 · 0 评论 -
线程管理之Thread类相关方法简介
CurrentThread() 静态方法currentThread()方法可返回代码段正在被那个线程调用的信息。简单案列:打印main 方法,正在被那个线程调用package com.zzg.thread;import com.zzg.obj.ThreadObj1;public class ThreadDemo1 { /** * @param args */原创 2015-09-08 01:26:44 · 639 阅读 · 0 评论 -
线程管理之线程停止一
1.1线程停止线程停止描述:停止一个线程意味着在线程处理完任务之前停掉正在执行的操作,也就是放弃当前的操作。java 终止正在运行线程的三种方法:1、使用退出标志,使线程正常退出,也就是run方法完成后线程终止。2、使用stop方法强行终止线程,但是不推荐使用这个方法,因为stop和suspend及resume方法一样,都是作废过期的方法,使用它们可能产生无法预料的结果。3、使原创 2015-09-10 01:37:43 · 750 阅读 · 0 评论 -
线程管理之获取和设置线程信息
获取和设置线程信息Thread类的对象中保存了一些属性信息能够帮助我们来辨别每一个线程,知道它的状态,调整控制其优先级。 这些属性是:ID: 每个线程的独特标识。Name: 线程的名称。Priority: 线程对象的优先级。优先级别在1-10之间,1是最低级,10是最高级。不建议改变它们的优先级,但是你想的话也是可以的。Status: 线程的状态。在Java中,线程只能原创 2015-08-02 00:41:35 · 1206 阅读 · 0 评论 -
Java线程:线程的调度-合并
本文转载至:http://lavasoft.blog.51cto.com/62575/221817Java线程:线程的调度-合并 线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。 join为非静态方法,定义如下:void join() 等待该线程终止。原创 2017-04-18 01:49:34 · 274 阅读 · 0 评论 -
Java线程:线程的调度-守护线程
本文转载至:http://lavasoft.blog.51cto.com/62575/221845Java线程:线程的调度-守护线程 守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使转载 2017-04-18 01:52:52 · 278 阅读 · 0 评论 -
Java线程:大总结
本文转载至:http://lavasoft.blog.51cto.com/62575/222742Java线程是Java语言中一个非常重要的部分,Java5之前,多线程的语言支持还是比较弱的,内容也较少,写一个复杂的多线程程序是相当有挑战性的。 在Java5以后,Java对多线程做了很多扩展,扩展部分称之为并发包。这部分内容大大增强了Java多线程编程的能力,通过使用Java5线程新特转载 2017-04-18 21:45:45 · 284 阅读 · 0 评论 -
Java线程:新特征-有返回值的线程
本文转载至:http://lavasoft.blog.51cto.com/62575/222082在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。 现在Java终于有可返回值的任务(也可以叫做线程)了。 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。 执转载 2017-04-18 21:53:05 · 396 阅读 · 0 评论 -
Java线程:新特征-锁(上)
本文转载至:http://lavasoft.blog.51cto.com/62575/222084在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。 Conditi转载 2017-04-18 21:52:29 · 305 阅读 · 0 评论 -
Java线程:新特征-锁(下)
本文转载至:http://lavasoft.blog.51cto.com/62575/27069/Java线程:新特征-锁(下) 在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,在一定程度上提高了程序的执行效率。 Java中转载 2017-04-18 21:51:44 · 305 阅读 · 0 评论 -
Java线程:新特征-信号量
本文转载至:http://lavasoft.blog.51cto.com/62575/222469Java线程:新特征-信号量 Java的信号量实际上是一个功能完毕的计数器,对控制一定资源的消费与回收有着很重要的意义,信号量常常用于多线程的代码中,并能监控有多少数目的线程等待获取资源,并且通过信号量可以得知可用资源的数目等等,这里总是在强调“数目”二字,但不能指出来有哪些在等待,哪些资转载 2017-04-18 21:50:59 · 282 阅读 · 0 评论 -
Java线程:新特征-阻塞队列
本文转载至:http://lavasoft.blog.51cto.com/62575/222524阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有转载 2017-04-18 21:50:28 · 248 阅读 · 0 评论