- 浏览: 17461 次
- 性别:
- 来自: 北京
最新评论
-
yuanliangding:
以为java没有epoll
Java NIO和操作系统I/O模型 -
gaohongliang:
好
Java中的synchronized和volatile
文章列表
0. Java 日志框架:
SLF4J+Logback
http://makeyouown.iteye.com/blog/1143566
1. 需求分析,UML,Argouml
http://argouml.tigris.org/
2. 项目管理工具,Redmine
http://www.redmine.org/
3. 代码文档生成工具。Java/Python/Ruby都有自己的文档生成工具,C/C++使用doxygen。
www.doxygen.org
4. 代码版本控制工具。Mercurial/Git/SVN。
5. Message Queues:
JMX: ActiveMQ, WebShp ...
Half-Sync/Half-Async (HS/HA)
将线程分为两个部分,一部分专门处理异步事件,另一部分专门处理同步事件。
在网络服务器里,一般异步事件指的是socket事件,同步事件指的是业务逻辑。
Leader/Follower (LF)
所有线程轮流监听请求,监听到后将监听令牌传到下一个线程,然后自己转去处理收到的请求。
这种模型的好处是避免了线程切换。
Staged Event-Driven Architecture (SEDA)
严格来说这个也是属于HS/HA,只是将业务逻辑部分再细分,为不同阶段按需分配不同大小的线程池。
spserver支持前两种模型。
Netty使用了 ...
http://download.oracle.com/javase/6/docs/
组织得很好,非常详细,还有例子。
在线看可能有点慢,下载下来更方便。
Java Language Specification
http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html
Java语言规范。包括各个版本的改进都写得很清楚。
本来以为会很晦涩难懂,实际上还好。
Java VM Specification
http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecT ...
NIO,New IO,相对Java1.4之前老的IO(OIO)。
操作系统就说Linux吧。
Linux上的I/O模型大致分为五种:
阻塞式,非阻塞式,I/O复用,信号驱动式I/O,异步I/O(AIO)。
(菜鸟我本来以为I/O复用已经算很高级的了,还经常用这个来考别人,如果对方答不上来还要沾沾自喜一番。羞愧地无地自容了,掩面。)
言归正传,这里说的I/O都是针对网络的,文件以及其他外设暂时不考虑。
有必要先解释一下阻塞、非阻塞,同步、异步的概念。
阻塞和非阻塞指的是执行一个操作是等操作结束再返回,还是马上返回。比如你去车站接朋友,这是一个操作。可以有两种执行方式。第一种,你这人特实诚 ...
刚开始看Netty,第一个文件Bootstrap,就发现使用了很多volatile关键字。
赶紧补充一下Java线程同步机制的知识。有错误的地方,请大家指正。
说到Java的线程同步问题肯定要说到两个关键字synchronized和volatile。说到这两个关键字,又要说道JVM的内存模型。JVM里内存分为main memory和working memory。
Main memory是所有线程共享的,working memory则是线程的工作内存,它保存有部分main memory变量的拷贝,对这些变量的更新直接发生在working memory里,并在适当的时候写回main memory ...
Java经验太少了,都不知道从哪开始看起,呵呵。
一点一点来吧,相信能学到不少东西。
现在碰到的两个问题,先记录一下:
1. Java线程同步问题
2. NIO原理