Результаты теста JCStress, которые я не могу понятьJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Результаты теста JCStress, которые я не могу понять

Сообщение Anonymous »

Может ли кто -нибудь помочь мне понять, почему я получает запретные результаты в этом JCStress? Сценарий прост. У нас также есть два актера, которые совсем одинаковы - они записывают состояние и результат операции, особенно в этом порядке. Тест не дает никаких запрещенных результатов с одним актером чтения. < /P>
public class RequestResultTest {

@JCStressTest
@Outcome(id = "1, 12345", expect = Expect.ACCEPTABLE)
@Outcome(id = "0, 0", expect = Expect.ACCEPTABLE)
@Outcome(id = "0, 12345", expect = Expect.ACCEPTABLE)
@Outcome(id = "1, 0", expect = Expect.FORBIDDEN, desc = "State is finished, but not result recorded")
@State
public static class SingleWriterMultiReaderTest {

private final SomeResult underTest;

public SingleWriterMultiReaderTest() {
this.underTest = new SomeResult();
}

@Actor
public void finish() {
underTest.finish(12345L);
}

@Actor
public void getStateAndResult1(IJ_Result result) {
int state = underTest.getState();
long longResult = underTest.getValue();

result.r1 = state;
result.r2 = longResult;
}

@Actor
public void getStateAndResult2(IJ_Result result) {
int state = underTest.getState();
long longResult = underTest.getValue();

result.r1 = state;
result.r2 = longResult;
}
}

public static final class SomeResult {

public static final int RUNNING = 0;
public static final int FINISHED = 1;

private volatile int state;
private long value;

public SomeResult() {
this.value = 0L;
this.state = RUNNING;
}

void finish(long value) {
this.value = value;
this.state = FINISHED;
}

public long getValue() {
return value;
}

public int getState() {
return state;
}
}
}
< /code>
Вот один из выходов. < /p>
Compilation: split
finish: Interpreter
getStateAndResult1: C1
getStateAndResult2: C2

JVM args: [-Dfile.encoding=UTF-8, -XX:-UseBiasedLocking, -XX:+StressLCM, -XX:+StressGCM, -XX:+StressIGVN, -XX:+StressCCP, -XX:StressSeed=1773949580]
Fork: #1

RESULT SAMPLES FREQ EXPECT DESCRIPTION
0, 0 142,382,593 97,91% Acceptable
0, 12345 116,937 0,08% Acceptable
1, 0 7,940

Подробнее здесь: https://stackoverflow.com/questions/794 ... understand
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»