自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

报喜鸟

温暖的鸟巢,技术的天堂.

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

java并发(三十一)Amdahl定律

[b]阿姆达尔定律[/b]阿姆达尔(Amdahl)定律是计算机系统设计的重要定量原理之一,于1967年由IBM360系列机的主要设计者阿姆达尔首先提出。该定律是指:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。阿姆达尔定律实际上定义了采取增强(加速)某部分功能处理的措施后可获得的性能改进或执行时间的加速比。简单来说是通过更快...

2014-05-19 16:15:09 187

finally不执行的陷阱

写了个DEMO,说明下finally在System.exit(-1);的后面,是不被执行的。[code="java"]/** * @author piaohailin * @date 2014-5-16 */public class FinalTest { public static void main(String[] args) { tr...

2014-05-16 09:23:52 375

原创 Java NIO(十二)NIO与IO

当学习了Java NIO和IO的API后,一个问题马上涌入脑海:我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异、它们的使用场景,以及它们如何影响您的代码设计。[size=xx-large]Java NIO和IO的主要区别[/size]下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。IO ...

2014-05-11 09:36:43 226

原创 Java NIO(十一)Pipe

Java NIO 管道是2个线程之间的单向数据连接。Pipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。这里是Pipe原理的图示:[img]http://dl2.iteye.com/upload/attachment/0096/9872/86d44ffe-277a-32bc-96e5-9362e3b11e0f.bmp[/img][si...

2014-05-11 09:36:07 102

Java NIO(十)DatagramChannel

Java NIO中的DatagramChannel是一个能收发UDP包的通道。因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入。它发送和接收的是数据包。[size=xx-large]打开 DatagramChannel[/size]下面是 DatagramChannel 的打开方式:[code="java"]DatagramChannel channel = Da...

2014-05-10 22:39:46 82

Java NIO(九)ServerSocketChannel

Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。这里有个例子:[code="java"]ServerSocketChannel serverSocketChannel = ServerSocketC...

2014-05-10 15:56:05 104

Java NIO(八)SocketChannel

Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:[list][*]打开一个SocketChannel并连接到互联网上的某台服务器。[*]一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。[/list][size=xx-large]打开 Socke...

2014-05-10 15:51:16 73

Java NIO(七)FileChannel

Java NIO中的FileChannel是一个连接到文件的通道。可以通过文件通道读写文件。FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下。[size=xx-large]打开FileChannel[/size]在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputStre...

2014-05-10 15:43:55 91

Java NIO(六)Selector

Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。[size=xx-large]为什么使用Selector?[/size]仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通道。对于操作...

2014-05-10 15:39:17 90

原创 java并发(三十)闭锁CountDownLatch

CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法public CountDownLatch(int count);构造方法参数指定了计数的次数public void countDown();countDown方法,当前线程调用此方法,则计数减一public void await() throws I...

2014-05-07 23:33:38 117

Java NIO(五)通道之间的数据传输

在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel传输到另外一个channel。[size=xx-large]transferFrom()[/size]FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节从给定的可读取字节通道传输到此...

2014-05-06 11:26:08 96

Java NIO(四)Scatter/Gather

Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel中读取或者写入到Channel的操作。分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。聚集(gather)写入Channel是指在写操...

2014-05-06 11:20:56 105

Java NIO(三)Buffer

Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。[size=xx-large]Buffer的基本用法[/size]使用Buffer读写数据一般遵循以下四个步骤:[list]...

2014-05-06 11:14:19 67

Java NIO(二)Channel

Java NIO的通道类似流,但又有些不同:[list][*]既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。[*]通道可以异步地读写。[*]通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。[/list]正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:[img]http://dl2.iteye....

2014-05-06 10:58:26 70

Java NIO(一)概述

[size=xx-large]Java nio的3个特性[/size]Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。[b]Channels and Buffers(通道和缓冲区)[/b]标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和...

2014-05-06 10:43:04 109

空空如也

空空如也

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

TA关注的人

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