`
chourentang
  • 浏览: 56550 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java 优化之三:并行程序控制

    博客分类:
  • Java
阅读更多
1.使用valatile关键字
    使用volatile关键字的作用:
    1- 当其他线程对变量做改变时,能够及时的反映到当前线程中
    2- 确保当前线程对变量的修改,能够及时的写回共享主内存中,并被其他线程所见
    3- 使用volatile声明的变量,编译器会确保其有序性


2.使用同步关键字synchronized
    synchronized使用情况:
    1- 使用在方法中
    public synchronized void method() {}
  当method方法被调用时,需要获取当前对象的锁,如果当前对象的锁被其他线程持有,则调用线程会等待,当其他线程调用结束后,锁会释放,当前线程获取到锁后才能执行。
  2- 使用在代码块中
  synchronized (this) {
            System.out.println("bbbbbbbbb");
  }
   当一个方法内部不需要同步的代码执行时间比较长的时候可以使用代码块同步的方式
  3- synchronized用于static
  public synchronized static void method3() {
       
  }
   当synchronized用于static方法时,相当去将锁加在了class对象之上,所有调用方法时需要获得class对象的锁,儿class对象只有一份。

3.使用wait、notify、notifyAll


4.ReentrantLock重入锁
  ReentrantLock在jdk6以前的版本中性能较synchronized高,在6及其后的版本中基本相同,不做介绍

5.ReadWriteLock读写锁

  读写锁在多线程读的时候可以并行,因此效率较串行的锁效率高。
  public class ReadWriteLockTest {
    private static Lock lock = new ReentrantLock();
    private static ReentrantReadWriteLock readWriteLock = new ReentrantReadWriteLock();
    private static ReadLock readLock = readWriteLock.readLock();
    private static WriteLock writeLock = readWriteLock.writeLock();
    private static Integer value;
    
    public Object handleRead() throws InterruptedException {
        try {
            lock.lock();
            Thread.sleep(10);
            return value;
        } finally {
            lock.unlock();
        }
    }
    
    public void handleWrite(int index) throws InterruptedException {
        try {
            lock.lock();
            Thread.sleep(10);
            value = index;
        } finally {
            lock.unlock();
        }
    }
    
    public Object handleRead2() throws InterruptedException {
        try {
            readLock.lock();
            Thread.sleep(10);
            return value;
        } finally {
            lock.unlock();
        }
    }
    
    public void handleWrite2(int index) throws InterruptedException {
        try {
            writeLock.lock();
            Thread.sleep(10);
            value = index;
        } finally {
            lock.unlock();
        }
    }
}


6.​Condition对象
  暂不介绍


7.ThreadLock线程局部变量
  ThreadLock也是一种并发线程访问变量的控制方法,但是与同步有本质的不同,ThreadLocal不提供锁,而是使用的空间换时间的方法,为每一个线程提供变量的副本,以保证线程的安全。
分享到:
评论

相关推荐

    Java程序性能优化

    《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优...

    java程序性能优化

    java程序性能优化Java是目前应用最为广泛的软件开发平台,学习针对Java程序的优化方法有重要的现实意义。《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的...

    大优惠 Java程序性能优化 让你的Java程序更快、更稳定最新版

    Java是目前应用最为广泛的软件开发平台,学习针对Java程序的优化方法有重要的现实意义。《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。 ...

    实战Java高并发程序设计.pdf 带书签+源码 (密码:ouwen)高清

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。

    Java程序性能优化 _让你的Java程序更快、更稳

    《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。 《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM...

    实战Java高并发程序设计.mobi

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。

    实战Java高并发程序设计 中文pdf版下载

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 实战...

    实战Java高并发程序设计00001

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。

    实战java高并发程序设计 kindle专用

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 ...

    实战java高并发程序设计.pdf

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 ...

    实战Java高并发程序设计 .pdf 下载

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 ...

    实战java高并发程序设计 pdf下载 高清完整版

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。, ...

    Java优化编程(第2版)

    Java优化编程(第2版)通过丰富、完整、富有代表性的实例,展示了如何提升Java应用性能,并且给出了优化前与优化后的Java应用程序的性能差别,以实际的实例与数字告诉你,为什么不可以这么做,应该怎么做,深入分析...

    《实战Java高并发程序设计》葛一鸣&郭超(编著)

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 ...

    实战Java高并发程序设计.zip

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。 ...

    实战Java高并发程序设计(带书签)

    第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java 8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。, ...

    大话JAVA性能优化PDF

    具体包括:性能优化策略、程序编写及硬件服务器的基础知识、Java API优化建议、算法类程序的优化建议、并行计算优化建议、Java程序性能监控及检测、JVM原理知识、其他 资源太大,传百度网盘了,链接在附件中,有需要...

Global site tag (gtag.js) - Google Analytics