Недавно я читал, что такие вещи плохие и не ООП.
Напротив, геттеры и сеттеры являются одним из краеугольных камней ООП (где такие побочные эффекты желательны).
Однако вы все равно можете передать аргументы конструктора перед началом потока, например,
new Thread(new MyRunnableObject(args)).start();
Если вы хотите, чтобы он возвращал результат без геттеров, вам лучшереализовать Callback
, который выполняет поток, например, по завершении.