Что ж, если вы объявите переменную local , вы не сможете ссылаться на нее нигде, кроме как в классах, созданных в этом методе.
Где вы реализуете Runnable
? Если он принадлежит к тому же классу, вы можете либо сделать его переменной экземпляра, а main
установить переменную для того же экземпляра, из которого вы создаете поток, или сделать его статической переменной. Если Runnable
реализован в другом классе, то, когда вы создаете экземпляр этого класса, вы можете предоставить ему необходимые данные - не совсем ясно, что это означает в данный момент ... Как уже говорили другие, код будет полезно. (Например, должны ли потоки видеть изменения в исходных данных?)
Кроме того, многопоточность относительно продвинута, тогда как распространение данных между классами является относительно базовым. Если вы новичок в Java, я бы рекомендовал начать с более простых вещей, чем многопоточность.
РЕДАКТИРОВАТЬ: Для вашего примера вы должны использовать AtomicInteger
, например:
import java.util.concurrent.atomic.AtomicInteger;
class DoThread implements Runnable {
private final AtomicInteger counter;
DoThread(AtomicInteger counter) {
this.counter = counter;
}
public void run() {
counter.incrementAndGet();
}
}
public class Test {
public static void main(String[] args) throws InterruptedException {
AtomicInteger shared = new AtomicInteger(0);
Thread t1 = new Thread(new DoThread(shared));
Thread t2 = new Thread(new DoThread(shared));
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println(shared.get()); // Prints 2
}
}