随笔分类 -  多线程

上一页 1 2 3
ReentrantReadWriteLock读写锁的使用
摘要:Lock比传统线程模型中的synchronized方式更加面向对象,与生活中的锁类似,锁本身也应该是一个对象。两个线程执行的代码片段要实现同步互斥的效果,它们必须用同一个Lock对象。 读写锁:分为读锁和写锁,多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,你只要上好相应的锁即可。如果你的代 阅读全文
posted @ 2014-11-11 09:12 duanxz 阅读(407) 评论(0) 推荐(0)
volatile之一--volatile不能保证原子性
摘要:目录: 《Java并发编程之三:volatile关键字解析 转载》 《volatile之一--volatile不能保证原子性》 《Synchronized之一:基本使用》 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制在java线程并发 阅读全文
posted @ 2014-06-10 09:01 duanxz 阅读(1071) 评论(0) 推荐(0)
同步
摘要:1、同步代价 同步代码对性能有两个方面的影响。 其一:应用在同步块上所花的时间会影响该应用的可伸缩性。 其二:获取同步锁需要一些CPU周期,所以也会影响性能。 1.1、同步与可伸缩性 当某个应用被分割到多个线程上运行时,加速比(speedup)可以用如下等式定义(即Amdahl定律): P是程序并行 阅读全文
posted @ 2014-05-05 22:15 duanxz 阅读(936) 评论(0) 推荐(0)
JAVA中线程同步的方法(7种)汇总
摘要:同步的方法: 一、同步方法 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会 阅读全文
posted @ 2014-05-05 16:51 duanxz 阅读(50491) 评论(3) 推荐(4)
thread-safe之3:SimpleDateFormat安全的时间格式化
摘要:想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多 阅读全文
posted @ 2014-03-25 17:19 duanxz 阅读(1459) 评论(0) 推荐(0)
fork/join使用示例
摘要:fork/join框架是用多线程的方式实现分治法来解决问题。fork指的是将问题不断地缩小规模,join是指根据子问题的计算结果,得出更高层次的结果。 fork/join框架的使用有一定的约束条件: 1. 除了fork() 和 join()方法外,线程不得使用其他的同步工具。线程最好也不要sleep 阅读全文
posted @ 2014-01-07 10:31 duanxz 阅读(1953) 评论(0) 推荐(0)
Java中的ReentrantLock和synchronized两种锁定机制的对比--删除
摘要:多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thread 类,可以用它来构建、启动和操纵线程,Java 语言包括了跨线程传达并发性约束的构造 —— synchronized 和 vo 阅读全文
posted @ 2013-12-19 15:19 duanxz 阅读(488) 评论(0) 推荐(0)
守护线程
摘要:Java有两种Thread:“守护线程Daemon”与“用户线程User”。 我们之前看到的例子都是用户,守护线程是一种“在后台提供通用性支持”的线程,它并不属于程序本体。 从字面上我们很容易将守护线程理解成是由虚拟机(virtual machine)在内部创建的,而用户线程则是自己所创建的。事实并 阅读全文
posted @ 2013-10-19 11:31 duanxz 阅读(550) 评论(0) 推荐(0)
线程组ThreadGroup
摘要:ThreadGroup线程组表示一个线程的集合。此外,线程组也可以包含其他线程组。线程组构成一棵树,在树中,除了初始线程组外,每个线程组都有一个父线程组。允许线程访问有关自己的线程组的信息,但是不允许它访问有关其线程组的父线程组或其他任何线程组的信息。API构造方法public ThreadGrou... 阅读全文
posted @ 2013-10-14 17:25 duanxz 阅读(1224) 评论(0) 推荐(0)
java线程安全问题之静态变量、实例变量、局部变量
摘要:java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同《java并发编程实践》中所说:写道给线程安全下定义比较困难。存在很多种定义,如:“一个类在可以被多个线程安全调用时就是线程安全的”。此处不赘述了,首先给出静态变量、实例变量、局部变量在多线程环境... 阅读全文
posted @ 2013-08-17 14:27 duanxz 阅读(1088) 评论(0) 推荐(0)
单例---被废弃的DCL双重检查加锁
摘要:被废弃的单例的DCL双重检查加锁/* *单例模式 *单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。 *加同步锁的单例模式,适合在多线程中使用。 */ class Singleton{ private static Singleton instance; private Singleton(){}//构造函数为private,外类不能使用new来创建立此类的实例 public static Singleton getInstance(){//获得实例的唯一全局访问点 System.out.println("进入外... 阅读全文
posted @ 2013-06-24 15:40 duanxz 阅读(3267) 评论(5) 推荐(1)
并发编程之六:java并发工具包(java.util.concurrent)汇总介绍
摘要:1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包。这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类。在这个包被添加以前,你需要自己去动手实现自己的相关工具类。本文 阅读全文
posted @ 2013-02-17 09:40 duanxz 阅读(1154) 评论(0) 推荐(0)
java多线程
摘要:1、进程与线程 我们可以在计算机上运行各种计算机软件程序。每一个运行的程序可能包括多个独立运行的线程(Thread)。 线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。 当多个线程同时读写同一份共享资源的时候,可能会引起冲突 阅读全文
posted @ 2013-01-23 10:57 duanxz 阅读(442) 评论(1) 推荐(1)
指令重排、内存屏障概念解析
摘要:在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器、运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要。否则,你很难搞清楚哪些操作是在并发先绝对安全的?哪些是相对安全的?哪些并发同步手段性能最低?valotile的二层语义分 阅读全文
posted @ 2013-01-15 17:28 duanxz 阅读(1059) 评论(0) 推荐(0)
SynchronizedMap
摘要:在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK 1.0的一部分。Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的——Hashtable的所有方法都是同步的。 此时,无竞争的同步会导致可观的性能代价。Has 阅读全文
posted @ 2012-10-25 19:30 duanxz 阅读(1262) 评论(1) 推荐(0)
CPU-bound(计算密集型) 和I/O bound(I/O密集型)
摘要:I/O密集型 (CPU-bound) I/O bound 指的是系统的CPU效能相对硬盘/内存的效能要好很多,此时,系统运作,大部分的状况是 CPU 在等 I/O (硬盘/内存) 的读/写,此时 CPU Loading 不高。CPU bound 指的是系统的 硬盘/内存 效能 相对 CPU 的效能 阅读全文
posted @ 2012-10-22 10:56 duanxz 阅读(866) 评论(0) 推荐(0)
JAVA迭代器与迭代模式
摘要:一、介绍 在jdk中,与迭代器相关的接口有两个:Iterator 与 IterableIterator:迭代器,Iterator及其子类通常是迭代器本身的结构与方法;迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这 阅读全文
posted @ 2012-10-18 18:10 duanxz 阅读(1472) 评论(0) 推荐(0)
Java线程面试题 Top 50
摘要:线程 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓 阅读全文
posted @ 2012-07-10 16:37 duanxz 阅读(656) 评论(0) 推荐(0)
java.util.ConcurrentModificationException
摘要:工作中碰到个ConcurrentModificationException。ConcurrentModificationException,它是在使用迭代器遍历集合对象时修改集合对象造成的(并发修改)异常。实际上,Java的集合框架是迭代器设计模式的一个很好的实现。 代码如下: 在执行了remove 阅读全文
posted @ 2012-07-04 13:44 duanxz 阅读(678) 评论(0) 推荐(1)

上一页 1 2 3