下载此文档

Java多线程并发访问解决方案.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
Java 多线程并发访问解决方案 Java 多线程并发访问解决方案 synchronized 关键字主要解决多线程共享数据同步问题。 ThreadLocal 使用场合主要解决多线程中数据因并发产生不一致问题。 ThreadLocal 和 Synchonized 都用于解决多线程并发访问。但是 ThreadLocal 与 synchronized 有本质的区别: synchronized 是利用锁的机制, 使变量或代码块在某一时该只能被一个线程访问。而 ThreadLocal 为每一个线程都提供了变量的副本, 使得每个线程在某一时间访问到的并不是同一个对象, 这样就隔离了多个线程对数据的数据共享。而 Synchronized 却正好相反,它用于在多个线程间通信时能够获得数据共享。 Synchronized 用于线程间的数据共享,而 ThreadLocal 则用于线程间的数据隔离。当然 ThreadLocal 并不能替代 synchronized, 它们处理不同的问题域。 Synchronized 用于实现同步机制,比 ThreadLoca l 更加复杂。 1、 java 中 synchronized 用法使用了 synchronized 关键字可以轻松地解决多线程共享数据同步问题。 synchronized 关键字可以作为函数的修饰符, 也可作为函数内的语句,也就是平时说的同步方法和同步语句块。如果再细的分类, synchronized 可作用于 instance 变量、 object reference (对象引用)、 static 函数和 class literals( 类名称字面常量) 身上。 synchronized 取得的锁都是对象;每个对象只有一个锁( lock )与之相关联;实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。 synchronized 的4 种用法: 1. 方法声明时使用, 线程获得的是成员锁. 2. 对某一代码块使用,synchronized 后跟括号, 括号里是变量,线程获得的是成员锁. d 后面括号里是一对象, 此时, 线程获得的是对象锁. 后面括号里是类, 此时, 线程获得的是对象锁. 2、 () 的用法一、概述 ThreadLocal 是什么呢? 其实 ThreadLocal 并非是一个线程的本地实现版本,它并不是一个 Thread ,而是 threadlocalvariable( 线程局部变量)。也许把它命名为 ThreadLocalVar 更加合适。线程局部变量(ThreadLocal) 其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是 Java 中一种较为特殊的线程绑定机制, 是每一个线程都可以独立地改变自己的副本, 而不会和其它线程的副本冲突。 ThreadLocal 是如何做到为每一个线程维护变量的副本的呢? 其实实现的思路很简单,在 ThreadLocal 类中有一个 Map , 用于存储每一个线程的变量的副本。概括起来说, 对于多线程资源共享的问题, 同步机制采用了“以时间换空间”的方式,而 ThreadLocal 采用了“以空间换时间”的方

Java多线程并发访问解决方案 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xxj16588
  • 文件大小0 KB
  • 时间2016-04-26