이의이 간단한 자바 프로그램을 보자 : import java.util.*;
class A {
static B b;
static class B {
int x;
B(int x) {
this.x = x;
}
}
public static void main(String[] args)
나는이 간단한 코드를 가지고있다. class A {
static volatile String[] a = new String[9];
public static void main(String[] args) {
new Thread() {
public void run() {
for (int i = 0; i <
일부 OSS 유닛 테스트에서이 코드를 자주 보았지만 스레드 안전성이 있습니까? while 루프가 invoc의 올바른 값을 볼 수 있도록 보장되어 있습니까? 그렇지 않은 경우; 괴상한 것은 누가 어떤 CPU 아키텍처가 실패 할지를 아는 사람을 가리킨다. private int invoc = 0;
private synchronized void incr
내 응용 프로그램에서 데이터 구조를 수정하기 위해 BackgroundWorker를 사용하는 경우 BackgroundWorker가 완료되면 (예 : RunWorkerCompleted 이벤트 처리기 내에서) 백그라운드 스레드에 대한 변경 사항이 기본 (UI) 스레드에서 볼 수 있다는 보장이 있습니까? 보너스 포인트의 경우 : 그렇다면이를 보장하는 메커니즘은 무
다음 클래스 : class Pizza {
Ingredients ingredients;
Price price;
public setIngredients(Ingredients ing) {
if (ingredients != null) {
throw new IllegalStateException();
콜렉션의 데이터 가시성과 관련하여 동시 콜렉션 (예 : ConcurrentMap)에서 기대할 수있는 것에 대해 약간의 확신이 없습니다. A : Thread1은 복잡한 개체를 넣고 Thread2는 가져옵니다. Thread2에서는 모든 속성을 볼 수 있습니까? B : Thread1은 복잡한 개체를 넣은 다음 나중에 일부 특성을 변경합니다. 그런 다음 Threa