java锁机制Synchronized

来源:互联网 发布:李华阳淘宝 编辑:程序博客网 时间:2024/04/29 23:07

多程程就涉及到资源共享管理问题,基本上同一时刻不能共享的数据都采用锁机制来实现。java中提供语言级的支持:Synchronized。有二种用法:
用方法的修饰中
package practisejava.others.Lock;

/**
* java同步的一种方法,采用synchronized关键字,实现用时就是放该关键字到实例方法或类方法前面,
* 表示该方法是同步的,同一时间只能有一个线程使用它
*/
public class SynchronizedMethod {
    int count;
   
    // synchronized用到实例方法中
    synchronized void bump() {
        count++;
    }
    static int classCount;
   
    // synchronized用到类方法中
    static synchronized void classBump() {
        classCount++;
    }
}

用作同步块中
package practisejava.others.Lock;

/**
* java同步的一种方法,采用synchronized块,使用主义如下:
* synchronized ( Expression ) Block
* 其中Expression为引用类型
*/
public class SynchronizedStatement {
    int count;
    void bump() {
        synchronized (this) {
            count++;
        }
    }

    static int classCount;
    static void classBump() {
        synchronized (SynchronizedStatement.class) {
            classCount++;
        }
    }
}


用在方法前做为修钸词和用到statement块的差别在于:前者是在运行时实现锁功能,后者在编译时生成的class文件中体现锁机制。

原创粉丝点击