cuốn sách gpt4 ai đã làm

Java song song dễ bay hơi i++

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-01 21:44:09 28 4
mua khóa gpt4 Nike

Tôi có một biến toàn cục

dễ bay hơi i = 0;

và hai chủ đề. Mỗi người thực hiện như sau:

i++;
System.out.print(i);

Tôi nhận được sự kết hợp sau đây. 12, 21 và 22.

Tôi hiểu tại sao tôi không nhận được 11 (dễ bay hơi không cho phép lưu vào bộ đệm i) vàTôi cũng hiểu 12 và 22.

Điều tôi không hiểu là làm sao có thể đạt được 21?

Cách duy nhất có thể có được sự kết hợp này là luồng in sau trước tiên phải Tôi Tăng từ 0 lên 1 rồi cache tôi==1. Sau đó, một chủ đề khác sẽ Tôi Tăng dần từ 1 lên 2 rồi in 2. Sau đó, luồng đầu tiên in được lưu trong bộ nhớ cache tôi==1. nhưng tôi nghĩ bay hơi Bộ nhớ đệm không được phép.

EDIT: Sau khi chạy mã 10.000 lần, tôi nhận được 11 lần. Sẽ bay hơi 添加到 Tôi Hoàn toàn không thay đổi các kết hợp có thể có.

markspace là chính xác: dễ bay hơi vô hiệu hóa bộ nhớ đệm Tôitôi++ Không phải nguyên tử. điều này có nghĩa Tôi Nó vẫn sẽ được "lưu vào bộ nhớ đệm" trong sổ đăng ký trong quá trình tăng dần.

r1 = tôi
// nếu tôi thay đổi ở đây thì r1 không thay đổi
r1 = r1 + 1
tôi = r1

Đây là lý do tại sao 11 vẫn ổn. 21 là do PrintStreams không đồng bộ (xem câu trả lời của Karol Dowbecki)

câu trả lời hay nhất

Mã của bạn không đảm bảo chuỗi nào sẽ gọi Hệ thống.outĐầu tiên.

由于 bay hơi từ khóa,Tôi Việc tăng và đọc diễn ra tuần tự, nhưng việc in thì không.

Về tính dễ bay hơi song song của Java i++, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/54791318/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress