Может ли кто -нибудь помочь мне понять, почему я получает запретные результаты в этом 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
Результаты теста JCStress, которые я не могу понять ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1738746894
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
Подробнее здесь: [url]https://stackoverflow.com/questions/79414206/jcstress-test-results-that-i-cant-understand[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия