12 2016 档案
摘要:用例1:子线程等待主线程发放许可! 用例2:主线程提前发放许可给子线程! 用例3:子线程传递数据给主线程。 全部操作: park()/park(Object)等待通行准许。 parkNanos(long)/parkNanos(Object, long)在指定运行时间(即相对时间)内,等待通行准许。
阅读全文
摘要:关于volatile,找了一堆资料看,看完后想找一个方法去做测试,测了很久,感觉跟没有一样。 这本书《深入理解Java内存模型》,对volatile描述中有这样一个比喻的说法,如下代码所示,对a的读写相当于对b的同步读写。 也就是说,volatile只保证了读与写的同步,每次读取都是得到最新值,每次
阅读全文
摘要:这是我参考的一篇文章《基于CAS的乐观锁实现》,讲述的是一种需要CPU支持的执行技术CAS(Compare and Swap)。 首先理解什么是原子性操作,意思是不能再拆分的操作,例如改写一个值,读取一个值都属于原子性操作。 那么CAS是两个操作,先比较旧值,比较通过后再进行改写,这种连合操作合并成
阅读全文
摘要:ThreadLocal相当于一个Map<Thread, T>,各线程使用自己的线程对象Thread.currentThread()作为键存取数据,但ThreadLocal实际上是一个包装了这个Map,并且线程只能存取自己的数据,不能操作其它线程的数据。 T get() set(T) remove()
阅读全文
摘要:本文原创,转载请标明原处! 启动与入口 Thread对象可操纵一个线程,而Runnable对象代表一个可被运行的对象,必须使用Thread对象的start()方法启动线程。启动后,会先运行Thread对象的run()方法,这个方法未被重写时,就会执行Runnable对象的run()方法。 主线程的入
阅读全文
摘要:本文原创,转载请标明原处! 有时需要追求效率,会代替一些算术运算。 求商:a >> n <=> a / 2^n 求积:a << n <=> a * 2^n 求余:a & ((1 << n) - 1) <=> a % 2^n 奇偶判断:a & 1 == 1 <==> a % 2 == 1 一般1表示选
阅读全文
摘要:这里,我将做一个简单的通信程序,分别使用三种原始的通信工具:BIO,NIO,AIO。 功能就是一个服务器,一个客户端。服务器就是处理请求,返回响应。而客户端就是连接服务器,发送请求,接收响应。 第一步:建立通信接口 Server抽象类,定义了一个处理请求,并返回响应的方法service(...)。C
阅读全文
摘要:本文原创,转载需标明原处。 通道,主要负责传输数据,相当于流,但流只能是输入或输出类型中的其一,而通道则可以兼并二者。 通道的基类是:Channel boolean isOpen() void close() 通道有同步方式和异步方式。 同步方式:亲力亲为,不交给他人来做。 异步方式:需要等待的事情
阅读全文
摘要:缓存的意思是中间存储,相当于中转站,积累一定的货物,再往目的地运送。如果没有中转站,就会出现一件一件的运送,耗费大量的人力物力。 缓存的基类是:Buffer 缓存的基本子类有:Char/Byte/Short/Int/Long/Float/Double + Buffer 缓存一般用一个数组做存储,ar
阅读全文
摘要:本文原创,转载请标明原处! 流分输入流和输出流,其基本操作分别是读取和写入。 流分字节流和字符流,其操作数据分别是字节和字符。 字节流的基类:InputStream,OutputStream。 字符流的基类:Reader,Writer。 流分源头流和非源头流(嵌套流),其区别在于该流是否可以独立使用
阅读全文

浙公网安备 33010602011771号