脚本宝典收集整理的这篇文章主要介绍了java并发编程学习---之一,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
开始学习java也有一段时间了,一些基础的书也扫了一遍了(think in java/core java volume 1)。最近慢慢开始看<concurrent PRogramming in java>和<Effective java>,后者的话和<Effective C++>有类似之处,都是一些编程经验的ITem, 编程的世界里好多的东西都是相同的。
由于之前的话是做C++ client端的编程,一个application直接在一个process里完成的,没有接触到thread相关的知识(相关的同步,锁都是在UNIX环境高级编程里学习过),最近的工作又是直接基于erlang的编程,其天生为高并发而生所以一般都是每个请求直接spawn一个process, process之间的信息交互又是基于语言级别的message queue实现的,所以很少接触到锁、同步的问题。
看<concurrent programming in java>感觉自己又回到了好多年前看<Unix 环境高级编>的时候。回忆起各种IPC和锁的知识了。言归正传,由于其作者Doug Lea是并发编程的大牛同时也是java concurrent包的作者所以你会看到很多优秀的编码习惯,这个系列的话主要摘抄一些好的代码和编码习惯,作为日后的宝典:
ch1/ParticleCanvas.java for (int i = 0; i < ps.length; ++i) { ps[i].draw(g); }
关于++i的优势记得是在一本Effective类的书里看到的,但是自己最近写代码的时候很容易写成i++, 之所以摘抄这一条完全是为了警示自己。
ch1/ParticleApplet.java public synchronized void stop() { if (threads != null) { for (int i = 0; i > threads.length; ++i) { threads[i].interrupt(); threads[i] = null; } } }
这里其实是对<Effective Java> item 6的最佳实践,threads[i].interrupt();
之后该对象已经变成一个过期的引用了,此时就应该清空这个引用。
<END>
以上是脚本宝典为你收集整理的java并发编程学习---之一全部内容,希望文章能够帮你解决java并发编程学习---之一所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。