java
文章平均质量分 78
snake168
无
展开
-
java并发学习之三:非阻塞漫想,关于环岛与地铁
到过北京上地的都会知道,上地城铁往西走有一个很大的上地环岛,旁边是中关村发展大厦,第一次到北京的时候还给了小弟一番挺大的感触经常从环岛这里经过,总会思考一个问题:北京地价这么贵,为什么在这里要建一个这么大的环岛呢?环岛到底有什么作用呢?解决交通拥塞?为行人方便?还是别的原因?在百度百科可以搜到:是为了减少交通(和谐)事故的发生。还有别的好处吗?先看看普通的十字路口,...原创 2011-03-27 21:10:41 · 201 阅读 · 0 评论 -
java并发学习之四:JSR 133 (Java Memory Model) FAQ【译】
Jsr133地址:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr133.pdf原文的地址:http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.htmlJSR 133 (Java Memory Model) FAQJeremy Manson andBrian Goetz,...2011-04-01 16:52:54 · 152 阅读 · 0 评论 -
java并发学习之五:读JSR133笔记
在写线程池的时候,遇到了很多的问题,特别是happen-before应该怎么去理解,怎么去利用,还有reorder,哪些操作有可能会被reorder?在这一点上,发现其实《concurrency in practice》也没描述得太清晰。在网上搜了一遍,发现JSR133的faq相对而言,还算稍微解释了一下,发现JSR133其实也就40多页,所以也就顺带看了一遍,[color=red]因为大...2011-04-06 11:33:57 · 214 阅读 · 0 评论 -
java并发学习之二:线程池(三)
没找到什么好工具,也没得到好建议,好技巧,只能自己摸索了一步步优化把先是优化测试代码加的内容不多,但挺关键的测试要模拟的是一个平稳的任务下发过程(如同现实生活中的),所以一下子将所有任务丢到队列中是很不对的,而且数量一大,堆就满了经过多次测试,决定通过让主线程每发送n个,就休息一段时间来降低主线程的下发频率以达到平稳的目的这样设置之后,再适当调一下,就可...2011-04-08 16:24:39 · 118 阅读 · 0 评论 -
java并发学习之二:线程池(四)
一直都知道有两个jvm,一个是server,一个是client,server适合做server,client合适做client,认识也就停留在这里了最近在练习玩并发的程序,一时手痒,试了一下-server,居然出来的数据如此惊人,相差近100倍先大概说一下代码的功能,对了,还要说一点,该测试只占用cpu1.1千万个任务,任务是将不断地加一个随机数,加10000遍,随机数产生的方...2011-04-12 17:43:51 · 131 阅读 · 0 评论 -
关于社交游戏中的同步服务器(长连接服务器)
博客好久没打理了,今天有时间,把在公司wiki上写的一些东西移植一下吧我们的游戏至今已经上线第四个同步玩法了有点想法,也有些疑惑,在这里发一下,欢迎各位tx各抒己见准确点说,这里所谓的“同步服务器”其实包括两个部分的内容,第一是说明通信方式是长连接,第二是服务器不具有动态扩容的能力,也就是说想增加用户数不能通过增加机器的方式来做当然,同步服务器按道理说只包含第一...2012-09-03 14:39:39 · 342 阅读 · 0 评论 -
关于游戏脚本
社交游戏其实不是太需求游戏脚本让我对游戏脚本产生兴趣的,主要是在三国资料片中,考虑添加上ai时产生的念头由于对ai并没有系统的了解,所以粗读了《AI游戏引擎程序设计》一书,里面涉及到了不小的篇幅,专门是讲游戏脚本的,说得挺有道理的,无论资料片最终添不添加AI,脚本语言其实也应该去尝试一下其次,是读了该书之后,回看自己以前写的任务系统,和最近写的资料片的技能系统,细看之后,发现自己在...2012-09-03 14:43:13 · 255 阅读 · 0 评论 -
关于java hotspot vm的server版和client版的一点小事
我们知道,java的虚拟器其实是有两个版本的,client版比较适合桌面程序,它会做一些例如像快速初始化,懒加载这一类的事情来适应桌面程序的特点server版则比较适合服务器程序,它做的则是一些针对服务器特点的事情,比如预加载,尤其在一些并发的处理上,它更是会做很多的优化,比如线程共享变量的处理,它经过编译(运行)发现并没有要求某一变量对其他线程可见,它则不会将该变量同步到...2012-09-03 14:53:44 · 262 阅读 · 0 评论 -
java并发学习之二:线程池(二)
在看书的时候看到了一个观察死锁的工具TDA(Thread Dump Analysis)看了半天,才知道这玩意儿需要由jvm产生一个Thread Dump这个Thread Dump跟之前看到的Heap Dump也不是一回事windows下是ctrl+break触发,unix下是ctrl+\或者kill -QUIT pid触发默认是输出到System.out,当然,你可以重定向的...原创 2011-03-24 09:43:57 · 116 阅读 · 0 评论 -
java并发学习之二:线程池
第二步,是实现一个线程池因为之前看书的时候留了个心眼,看线程池相关的内容的时候特意没去研究JDK的实现因为学跟做不是一码事,写一个线程池,算是给自己看完并发实践这书的一个练习吧废话不多说,练习开始首先,整理一下要实现的功能,或者说要注意的元素1.实现Executor接口2.实现一个等待队列(可否配置,优先级等)3.是否需要预启动线程(可否配置)4.执行开...原创 2011-03-23 20:40:59 · 124 阅读 · 0 评论 -
java并发学习之一:CountDownLatch
看了几个月的《Java Concurrency in Practice》到了今天终于算可以收尾了,之前留下的看不懂的代码,现在也基本明晰了一些全书介绍了很多细节问题,很多注意的点,很多原则性问题,个人感觉,无论看几遍,都是值得的。但很多都是一些需要去记忆的东西,这个是需要经验的积累的。真正想在思考上,在设计上得到更大的提高,看来必然是要落在了concurrent包的数个同步器的实现的分...原创 2011-03-08 17:27:09 · 113 阅读 · 0 评论 -
java并发你也许不知道的(读Java Concurrency in Practice)
[size=large]1.线程安全[/size]a.无状态的类是线程安全的b.所有状态都具有原子性的类是线程安全的原子性:即对该类的操作是不被打断的,即使在多线程的环境下如果一个类只有单个状态,推荐使用jdk中的java.util.concurrent.atomic包AtomicBoolean AtomicInteger AtomicIntegerArray Atom...2010-08-10 16:44:46 · 111 阅读 · 0 评论 -
java并发学习之六:JCSP(Java Communicating Sequential Processes)实践
首先得描述下什么是JCSP:CSP是Communicating Sequential Processes的缩写在ibm的developerworks 中国上学习java的并发编程时无意发现的,因为在之前的多线程编程实践中,调试一个多线程的bug都花了大量的时间,所以一直想找点工具或者技巧来学习一下然后就发现了这个玩意儿,这是JCSP在ibm的地址:[url=http://www...2011-04-13 11:32:49 · 852 阅读 · 0 评论 -
java并发学习之二:线程池(五)
之前的线程池已实现了基本的功能:运行每一个线程,而且测试了一下,大约速度是ThreadPoolExecutor的1.5倍(当然,这是有充分的理由的,后文会提到)之后的版本将准备是实现“优雅退出”和优化(非阻塞)空闲线程队列了,这个步骤想了很久,发现了很多的问题(包括准备的实现方法也在这里列一下):1.初步构思了几个方法[list][*]void shutDown():该方法将让...2011-04-17 13:31:43 · 106 阅读 · 0 评论 -
java的gui(一)
[color=red]注:该文章只是一个尝试。 一直在想办法以一种良好的方式省时省事地记录自己的思维,系统地管理学到的知识,试过不少方法,都不凑效 本文将试着从开始着手看一个问题开始,每一步都跟踪自己的思维,记录相关的资料的出处[/color] 因为工作中会经常用到java的gui,一直在找一个契机,去学习一下java的gui相关知识。在看到《java concur...原创 2011-01-21 18:06:50 · 201 阅读 · 0 评论 -
近月学习记录(一)
最近换了一个公司,确切来说应该是进入了一个新的行业,很多东西的学习都是从0开始的,学的东西很多很杂,先分点记下,以便以后复习回忆或者近一步学习[b]1.key-value数据库[/b]像redis,memcached都是这样的数据库,网上有一篇小日本的文章,写得很详细很好,虽然是小日本的,但也只能将就一下了[url="http://tech.idv2.com/2008/07/11/...2011-06-12 22:27:56 · 160 阅读 · 0 评论 -
项目回忆(一):虚拟房间系统
需求:1.硬件环境:所有服务器都是web容器,有统一的缓存memcached,由于一些原因,不允许用中央控制服务器2.实现一个虚拟房间系统,即包括房间内的数据可见并共享(数据竞争性),房间有超时检测,房间外部还有一个统一调度(即不是自由进入房间,由系统分派),房间有人数限制,也要求人数多的尽快分配满,人数少的尽快清空实现思路开始是一个很简单的思考模式:超时检测与房间调度...原创 2011-09-23 14:34:41 · 385 阅读 · 0 评论 -
我也来说说Vector跟ArrayList的区别
这几天看到论坛首页有一个挺热的帖子[url=http://www.iteye.com/topic/924440]Vector和ArrayList的本质区别到底是什么?[/url],正好是自己正在学习的内容,所以也在这发个帖子,献献丑,如有写得不正确的,还希望各位同学斧正帖子讨论的是面试中常见的Vector,ArrayList以及与其类似的“线程安全类”的问题里面有几个关键点:1...2011-02-27 19:46:31 · 117 阅读 · 0 评论 -
java的gui(二)
既然这EventDispatchThread是一个线程,那肯定是从run方法开始了run中的finally块中有块有意思的代码[code="java"]/* * Fix for 4648733. Check both the associated java event * queue and the PostE...2011-03-04 19:42:45 · 79 阅读 · 0 评论 -
关于锁的两个小技巧
现在我们的开发中越来越多用锁的情况,锁其实比cas恐怖很多,像性能问题,死锁问题,延时问题,都是极难排查的问题之前在学习中掌握了一些技巧,在这里分享一下[b]1.open call[/b]并发编程里面有一个术语“open call”意思就是当我们在调用一个lock的方式时,我们需要将手中的锁释放掉(如果我们正持有锁),或者尽量避免去调用会lock的方法看起来很简...2012-09-03 14:55:52 · 165 阅读 · 0 评论