Java多线程问题:同步与互斥实例
在Java中,多线程可能会遇到同步和互斥的问题。以下是一些实例:
- 同步锁(Synchronized):
当一个方法需要保护其内部状态时,可以使用synchronized关键字。例如:
public class Counter {
private int count;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
- 互斥锁(Lock):
Java 11及更高版本引入了java.util.concurrent.locks.Lock
接口,提供了更细粒度的锁管理。例如:
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class ExclusiveTask {
private Lock lock = new ReentrantLock();
public void doExclusiveTask() {
lock.lock(); // 互斥锁定
try {
// 进行任务操作,这里只作为示例
System.out.println(" Exclusive task is running ...");
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock(); // 解锁
System.out.println(" Exclusive task completed ...");
}
}
}
通过上述实例,你可以理解Java多线程中的同步与互斥问题。
还没有评论,来说两句吧...