在java中编写自定义类Mutex?

时间:2015-03-10 07:27:48

标签: java synchronization mutex

我正在学习关于同步的多线程。

需要: 在JAVA中编写具有2种方法的互斥类

Class Mutex {

    acquire();

    release();
}

任何人都可以帮助我。提前谢谢。

2 个答案:

答案 0 :(得分:2)

此处Tanembaum(第128页)有信号量发明人的互斥锁示例。 它在C语言中,但它非常简单易读,并且不易翻译。它在java

Object lock = new Object();
int queue = 0


    void acquire() throws InterruptedException{
    synchronized (lock){
        while (queue > 0) {
            lock.wait();
        }
        queue ++;
    }
}

void release(){
    synchronized (lock){
        queue --;
        lock.notify();
    }
}

这是一个二进制互斥锁;通过更改while条件中的数字,您可以选择最大并发访问次数

答案 1 :(得分:1)

看看这里:

http://www.vogella.com/tutorials/JavaConcurrency/article.html#memorymodel_synchronized

我每次需要它时都会使用它。如果您在不同线程之间使用共享变量,则必须同步修改。