Метод Runnable.run()
не принимает никаких аргументов, и вы не можете это изменить. Но есть способы передать входные данные и вернуть выходные данные из потока. Например:
public int someMethod(final int arg) throws InterruptedException {
final int[] result = new int[1];
Thread t = new Thread(new Runnable() {
public void run() {
result[0] = arg * arg;
}
});
t.start();
// do something else
t.join();
return result[0];
}
Обратите внимание, что метод run()
может ссылаться только на final
переменные включающего метода, но эти переменные могут быть ссылками на изменяемые объекты; например int[]
.
Разновидностью этого является использование переменных экземпляра окружающего класса.
Кроме того, вы можете создать подкласс Thread
, реализовать его метод run()
и использовать аргументы конструктора, методы получения и / или установки для передачи аргументов и результатов.