zoukankan      html  css  js  c++  java
  • 深入同步语法

    1.深入synchronized关键字

    线程间的通讯首要的方式就是对字段及其字段所引用的对象的共享访问。这种通信方式是及其高效的,但是也是导致了可能的错误:线程间相互干涉和内存一致性的问题。避免出现这两种错误的方法就是同步。

    • 线程间相互干扰描述了当多个线程访问共享数据时可能出现的错误。
    • 内存一致性错误描述的了共享内存可能导致的错误。
    • 同步方法(Synchronized method)描述了一种简单的可以有效防止线程间相互干扰及其内存一致性错误的方法。
    • 明锁及同步描述了一种更加通用的同步方法,以及同步是如何基于明锁而实现的。
    • 原子性描述了不能被其它线程干扰的操作。
    • Java编程语言中提供了两种基本的同步用语:同步方法和同步语句。同步语句相对而言更为复杂一些,我们将在下一小节中进行描述。本节重点讨论同步方法。  

    • 我们只需要在声明方法的时候增加关键字synchronized即可:

      [java] view plain copy
       
      1. public class SynchronizedCounter {  
      2.     private int c = 0;  
      3.     public synchronized void increment() {  
      4.         c++;  
      5.     }  
      6.     public synchronized void decrement() {  
      7.         c--;  
      8.     }  
      9.     public synchronized int value() {  
      10.         return c;  
      11.     }  
      12. }  

      同步语句

      另外一种创建同步代码的方式就是使用同步语句。和同步方法不同,使用同步语句是必须指明是要使用哪个对象的内部锁:

      [java] view plain copy
       
      1. public void addName(String name) {  
      2.     synchronized(this) {  
      3.         lastName = name;  
      4.         nameCount++;  
      5.     }  
      6.     nameList.add(name);  
      7. }  
  • 相关阅读:
    RESTful风格的API
    案例:toDoList
    jQuery中的Ajax
    php 使用kafka
    crontab不执行
    php两种实现守护进程的方式
    crontab不执行脚本,手动调测又没有任何问题
    centos7 安装跳板机(堡垒机)
    Ubuntu修改默认键盘布局的方法
    openresty nginx升级版
  • 原文地址:https://www.cnblogs.com/minghualiyan/p/5438638.html
Copyright © 2011-2022 走看看