Я работаю над проектом с потоками. Это начало моего основного класса.Невозможно присвоить значение статическому целому
public class Main {
public static int firstIndex, secondIndex, thirdIndex, fourthIndex, fifthIndex;
Затем я создаю поток и переопределяю его функцию run(). Внутри run() я пытаюсь назначить целые числа моим статическим целочисленным переменным, которые я определил ранее.
cThread thread1 = new cThread(ant) {
@Override
public void run() {
try {
firstIndex = myAllocator.alloc(11, '1', this);
secondIndex = myAllocator.alloc(10, '2', this);
Функция Alloc() возвращает правильные целые числа внутри, но статические переменные всегда остаются на 0 и не изменится до значений, что функция возвращает. Однако, если я не делаю целые статичен, он дает следующее сообщение об ошибке:
Cannot make a static reference to the non-static field firstIndex.
Я уверен, что функции возвращают правильные значения. В чем проблема? Большое спасибо.
Попробуйте Main.firstIndex. – miljanm
Это не сработало, нет синтаксической ошибки, но она по-прежнему остается равной 0. Она также не позволит мне перейти от статического к нормальному целому. –
Пожалуйста, ** пожалуйста **, ** ПОЖАЛУЙСТА ** прочитайте документацию _some_ о том, как потоковая обработка работает на Java. У вас нет синхронизации и нет 'volatile'. Неудивительно, что ваш код не работает. –