自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

坐井观天的日常

虽然是坐井观天,但是也要认真度过~也许是虚度,也许不幸福,至少很用心地坚持着追求

  • 博客(11)
  • 收藏
  • 关注

原创 java类库的阅读笔记_jdk1.7.0_40_java.io.FileInputStream

2013 1129: 类: java.io.InputStream 笔记: 这个抽象类用来定义输入流的读取方式。 三个读数据的方法,read()、read(byte[])、read(byte[], int, int),其中read()返回一个0~255的字节,子类必须实现。另外两个都是在read上的封装。 如果流还有效,没有到结束,又暂时读不到数据,那么就会挂住。 ski

2013-11-29 22:19:05 1067

原创 Java并发编程实战~笔记~章四

4.2 实例封闭 如果某个对象不是线程安全的,可以通过多种技术使其在多线程程序中安全地使用。比如线程封闭,或者通过一个锁来保护对该对象的所有访问。 实例封闭,就是把一个对象封装到另一个对象里面去,能够访问被封装对象的所有代码路径都是已知的,只要在这些路径上面设置合适的同步策略,就能确保以线程安全的方式来使用非线程安全的对象。 比如这个例子: public class PersonSet {

2013-11-26 23:35:52 712

原创 Java并发编程实战~笔记~章三

3.1 可见性 这部分我没怎么看懂。或许是我受限于技术视野,无法找到书中描述的多线程运行的环境。 几个点: 1、重排序。 按书中的说法,重排序并不是一个稀奇的特性,屏蔽重排序细节的方法是——只要是共享的数据,就进行正确的同步。(实际上我从未见过重排序的情况,哪怕根据书中用例进行试验)。 2、失效数据。 这似乎也不是什么很值得提出的点。因为有时共享数据并不需要严格的准确性,比如 whil

2013-11-25 20:39:31 928

原创 volatile

关于vilatile关键字,对比了《Java并发编程实战》和《深入理解Java虚拟机》,发现前者是忽悠,即使不是忽悠,也是不清不楚。后者才是真牛逼,还是国人写的,真是厉害啊。 我的结论就是: 1、共享可变的long、double变量如果没有锁保护,就要用vilatile,防止某些虚拟机应用了“非原子性协定”。其他所有地方,可以按建议使用vilatile,也可以不使用。 2、所谓的vilati

2013-11-19 00:40:18 1991

原创 Java并发编程实战~笔记~章二

1、线程安全要素:对共享、可变状态的访问操作。 所谓状态,是指存储在状态变量(实例或者静态域)中的数据。对象的状态可能包括其他依赖对象的域。状态是一系列变量的集中体现,比如 int[] data; int size; 该对象的状态就包含两个变量。无状态的类一定是线程安全的。 共享是说这个状态将被多个线程访问。 有共享可变状态的类,如果有写操作,那么一定需要对状态进行全面的同步保护。

2013-11-17 16:48:43 1003

原创 使用TreeMap

package collections; import java.util.Map.Entry; import java.util.Random; import java.util.SortedMap; import java.util.TreeMap; public class TestTreeMap { public static void main(String[] args) {

2013-11-17 11:25:58 1108

原创 堆排序

堆排序还是很简单的,用一个数组来存储节点,比如k[128]。 最小堆的约束: 1、数据从k[1]开始记录。 2、节点k[i]的两个子节点分别为k[2i]、k[2i+1]。k[i] 3、始终保持节点连续,即n个节点,在数组中占位为k[1]~k[n]。 设已有节点为k[1]~k[n]。 增加节点操作: a、将新节点放在k[n+1]。令k[x]表示当前处理节点,此时k[x]

2013-11-16 22:16:00 748

原创 java类库的阅读笔记_jdk1.7.0_40_java.util.Timer

2013 1116: 类: java.util.Timer 属性: private final TaskQueue queue = new TaskQueue(); 笔记: 一个定时器可以支持多个定时任务,定时任务的存储就放在queue中。 TaskQueue有一个定时任务数组private TimerTask[] queue = new TimerTask[128]

2013-11-16 21:45:36 1299

原创 java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.ConcurrentHashMap

2013 1113: 类: java.util.concurrent.ConcurrentHashMap 笔记: 这个类是经常使用的并发容器,但是看了一下源码,也不是那么牛逼。 它的并发安全性,主要是在写操作(新增和删除)时,使用ReentrantLock进行了锁保护。这和Collections.synchronizedMap是类似的。 优点就是,它内建了一个Segment

2013-11-13 23:24:56 809

原创 java类库的阅读笔记_jdk1.7.0_40_java.util.concurrent.locks.ReentrantReadWriteLock

2013 1113: 这个类实现了接口 ReadWriteLock {     Lock readLock();     Lock writeLock(); } 两个方法分别返回ReentrantReadWriteLock对象持有的属性readLock和writeLock。 两个Lock属性,具有lock和unlock方法,其实现全部转移到NonfairSync和FairS

2013-11-13 21:19:26 686

原创 使用ReentrantLock

使用ReentrantLock,最大的感触就是,一定要严格按照使用规范去写,否则各种多线程问题让人防不胜防。 大概几点吧: 1、无论是ReentrantLock还是Condition都是为了锁资源而存在的,没有资源的话,这些东西就没有意义。 2、ReentrantLock是为了保证操作资源的互斥性,Condition是为了消除等待资源的时间浪费。 3、ReentrantLock一定要loc

2013-11-11 23:47:46 695

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除