91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

listnode java怎樣實現線程安全

小樊
81
2024-11-20 08:58:14
欄目: 編程語言

在Java中,要實現ListNode類的線程安全,可以使用以下方法:

  1. 使用synchronized關鍵字:

在需要同步的方法或代碼塊上添加synchronized關鍵字,確保同一時間只有一個線程可以訪問這些方法或代碼塊。

public class ListNode {
    private int val;
    private ListNode next;

    public synchronized void setValue(int val) {
        this.val = val;
    }

    public synchronized int getValue() {
        return val;
    }

    public synchronized ListNode getNext() {
        return next;
    }

    public synchronized void setNext(ListNode next) {
        this.next = next;
    }
}
  1. 使用ReentrantLock

ReentrantLock是Java提供的一種顯式鎖,比synchronized關鍵字更靈活。

import java.util.concurrent.locks.ReentrantLock;

public class ListNode {
    private int val;
    private ListNode next;
    private ReentrantLock lock = new ReentrantLock();

    public void setValue(int val) {
        lock.lock();
        try {
            this.val = val;
        } finally {
            lock.unlock();
        }
    }

    public int getValue() {
        lock.lock();
        try {
            return val;
        } finally {
            lock.unlock();
        }
    }

    public ListNode getNext() {
        lock.lock();
        try {
            return next;
        } finally {
            lock.unlock();
        }
    }

    public void setNext(ListNode next) {
        lock.lock();
        try {
            this.next = next;
        } finally {
            lock.unlock();
        }
    }
}
  1. 使用AtomicIntegerAtomicReference

對于簡單的數值類型和引用類型,可以使用Java提供的原子類,如AtomicIntegerAtomicReference,它們內部實現了線程安全的操作。

import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;

public class ListNode {
    private AtomicInteger val = new AtomicInteger();
    private AtomicReference<ListNode> next = new AtomicReference<>();

    public void setValue(int val) {
        this.val.set(val);
    }

    public int getValue() {
        return val.get();
    }

    public void setNext(ListNode next) {
        this.next.set(next);
    }

    public ListNode getNext() {
        return next.get();
    }
}

以上三種方法都可以實現ListNode類的線程安全,具體選擇哪種方法取決于你的需求和場景。

0
宝丰县| 新民市| 循化| 临泽县| 麦盖提县| 从江县| 赞皇县| 桂东县| 安仁县| 越西县| 资溪县| 邢台市| 吐鲁番市| 安龙县| 米林县| 兴义市| 乌拉特前旗| 鹤岗市| 长寿区| 逊克县| 剑阁县| 高雄县| 广德县| 孝义市| 开原市| 甘南县| 洪湖市| 乡城县| 广宗县| 繁峙县| 抚松县| 阜阳市| 昌乐县| 万源市| 于都县| 越西县| 资溪县| 张家川| 肃宁县| 仁寿县| 竹山县|