美文网首页
java并发编程学习---之一

java并发编程学习---之一

作者: lzh2nix | 来源:发表于2017-01-02 23:36 被阅读0次

    开始学习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并发编程学习---之一

          本文链接:https://www.haomeiwen.com/subject/igqivttx.html