您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在Java中,synchronized关键字主要用于解决多线程并发访问共享资源时的同步问题。以下是一些适用synchronized关键字的场景:
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class SharedData {
private int data;
public synchronized void increment() {
data++;
}
public synchronized void decrement() {
data--;
}
public synchronized int getData() {
return data;
}
}
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class SharedData {
private int data;
private final ReadWriteLock lock = new ReentrantReadWriteLock();
public void write(int newData) {
lock.writeLock().lock();
try {
data = newData;
} finally {
lock.writeLock().unlock();
}
}
public int read() {
lock.readLock().lock();
try {
return data;
} finally {
lock.readLock().unlock();
}
}
}
public class ProducerConsumer {
private final Object lock = new Object();
private boolean isProduced = false;
public void produce() throws InterruptedException {
synchronized (lock) {
while (isProduced) {
lock.wait();
}
// 生产数据
isProduced = true;
lock.notify();
}
}
public void consume() throws InterruptedException {
synchronized (lock) {
while (!isProduced) {
lock.wait();
}
// 消费数据
isProduced = false;
lock.notify();
}
}
}
需要注意的是,过度使用synchronized关键字可能导致性能下降和死锁等问题。在实际应用中,应根据具体需求选择合适的同步策略。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。