Thread t = new Thread(new Runnable() { public void run() {} });
I’d like to create a thread this way. How can I pass parameters to the run method if possible at all?
Edit: To make my problem specific, consider the following code segment:
for (int i=0; i< threads.length; i++) {
threads[i] = new Thread(new Runnable() {public void run() {//Can I use the value of i in the method?}});
}
Based on Jon’s answer it won’t work, since i is not declared as final.
No, the
runmethod never has any parameters. You’ll need to put the initial state into theRunnable. If you’re using an anonymous inner class, you can do that via a final local variable:If you’re writing a named class, add a field to the class and populate it in the constructor.
Alternatively, you may find the classes in
java.util.concurrenthelp you more (ExecutorServiceetc) – it depends on what you’re trying to do.EDIT: To put the above into your context, you just need a final variable within the loop: