thread
文章平均质量分 79
venice
这个作者很懒,什么都没留下…
展开
-
线程安全的深入研究
1、什么是线程安全(thread safe)? 一个类要成为线程安全的类,就是在该类被多个线程访问时,不管运行环境中执行这些线程有什么样的时序安排或者交错,它仍然执行正确行为,并且在调用的代码中没有任何额外的同步。2、什么时候考虑线程安全问题? 当一个类的实例为singleton的时候,你就要考虑该实例在调用的时候是否是线程安全的。 最熟悉的例子就是ser原创 2009-06-28 02:00:00 · 857 阅读 · 1 评论 -
ThreadLocal的研究_源码分析
一、ThreadLocal是什么: ThreadLocal并不是一个thread,而是相当于thread的一个的局部变量。它只是用来维护本地变量。针对每个线程,提供自己的变量副本,主要是为了避免线程冲突,每个线程维护自己的版本。彼此独立,修改不会影响到对方。说明:ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多原创 2012-09-25 10:28:19 · 866 阅读 · 0 评论 -
ThreadLocal实例
实例一:package com.thread;public class ThreadLocalTest { private static ThreadLocal threadLocal = new ThreadLocal(); public static class Thread1 extends Thread{ private String name; p原创 2012-09-25 16:12:20 · 1001 阅读 · 0 评论 -
java.util.concurrent(JUC)的研究--》锁机制--》Lock与ReentrantLock
从本文开始我们对JUC中比较重要的锁机制进行研究,下面我们来看下java.util.concurrent.locks.Lock接口和其实现类ReentrantLock。 互斥锁--Lock接口及其实现类ReentrantLock:所谓互斥锁, 指的是一次最多只能有一个线程持有的锁. 在jdk1.5之前, 我们通常使用synchronized机制控制多个线程对共享资源的访问。而现在Loc原创 2012-10-06 18:14:45 · 1072 阅读 · 0 评论 -
java.util.concurrent(JUC)的研究--》atomic原子操作--》CAS操作
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁)。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错原创 2012-10-06 16:28:35 · 920 阅读 · 0 评论 -
java.util.concurrent(JUC)的研究--》atomic原子操作--》happens-before法则
在Java Concurrency in Practice中是这样定义线程安全的:当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替运行,并且不需要额外的同步及在调用方代码不必做其他的协调,这个类的行为仍然是正确的,那么这个类就是线程安全的。显然只有资源竞争时才会导致线程不安全,因此无状态对象永远是线程安全的。原子操作的描述是: 多个线程执行一个操作时,其中原创 2012-10-06 14:51:02 · 1052 阅读 · 0 评论 -
java.util.concurrent(JUC)的研究--》atomic原子操作--》从AtomicInteger开始
通常情况下,在Java里面,++i或者--i不是线程安全的,这里面有三个独立的操作:读变量当前值,为该值+1/-1,然后写回新的值。在没有额外资源可以利用的情况下,只能使用加锁才能保证读-改-写这三个操作时“原子性”的。在concurrent包未引进之前,是采用synchronized并且在变量上使用了volatile来实现的。public final synchronized void原创 2012-09-27 11:26:09 · 1002 阅读 · 0 评论 -
java.util.concurrent(JUC)的研究----目录
主要参考文摘:http://www.blogjava.net/xylz/archive/2010/07/08/325587.html --------------------------java.util.concurrent(JUC)的研究----目录-------------------------------------java.util.concurrent(JUC)的研究--原创 2012-09-27 11:49:46 · 937 阅读 · 0 评论 -
java.util.concurrent(JUC)的研究----概述
从JDK 1.5开始,增加了java.util.concurrent包,它的引入大大简化了多线程程序的开发。java.util.concurrent包分成了三个部分,分别是java.util.concurrent、java.util.concurrent.atomic和java.util.concurrent.locks。内容涵盖了并发集合类、线程池机制、同步互斥机制、线程安全的变量更新工具类原创 2012-09-26 21:07:17 · 1045 阅读 · 0 评论 -
servlet与Struts action线程安全问题
servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题。然而,很多人编写Servlet/JSP程序时并没有注意到多线程安全性的问题,这往往造成编写的程序在少量用户访问时没有任何问题,而在并发用户上升到一定值时,就会经常出现一些莫明其妙的问题。 Servlet转载 2009-06-28 02:29:00 · 665 阅读 · 0 评论 -
struts2中的 ThreadLocal模式
设计模式(Design pattern)是经过程序员反复实践后形成的一套代码设计经验的总结。设计模式随着编程语言的发展,也由最初的“编程惯例”逐步发展成为被反复使用、并为绝大多数程序员所知晓的、完善的理论体系。我们使用设计模式(Design pattern)的初衷,是使代码的重用度提高、让代码能够更容易被别人理解以及保证代码的可靠性。毫无疑问,在程序中使用设计模式无论是对于程序员自身还是对于应用程转载 2012-09-25 17:44:45 · 909 阅读 · 0 评论