我有一个for循环,其中包含一个线程。代码有效,但参数没有正确传递给函数。你可以帮我吗?Android中的for循环线程
for(i= 1 ;i < 30; i++) {
Thread thread = new Thread() {
@Override
public void run() {
example_function(i);
}
};
thread.start();
}
我有一个for循环,其中包含一个线程。代码有效,但参数没有正确传递给函数。你可以帮我吗?Android中的for循环线程
for(i= 1 ;i < 30; i++) {
Thread thread = new Thread() {
@Override
public void run() {
example_function(i);
}
};
thread.start();
}
扩展Thread
一个参数:
class IntThread extends Thread {
private int i;
public IntThread(int i) {
this.i = i;
}
@Override
public void run() {
example_function(this.i);
}
}
然后执行它:
for(int i= 1 ;i < 30; i++) {
new IntThread(i).start();
}
在运行之前,您应该添加一个字段诠释J到你的线程,并与thread.j初始化=我你的线程
for(i= 1 ;i < 30; i++) {
Thread thread = new Thread() {
final int j;
@Override
public void run() {
example_function(j);
}
};
thread.j = i;
thread.start();
}
你在正确的轨道上,但是这段代码不会编译 - 'Thread'没有一个名为'j'的成员 - 并且'final'成员无论如何都不能改变。 – 323go
此代码看起来可疑,但您应该真正使用Runnable
与线程。
像这样的打印你想要什么,如果你添加一个MyRunnable
类象下面这样:
private class MyRunnable implements Runnable {
private int i;
public MyRunnable(int i) {
this.i = i;
}
@Override
public void run() {
example_function(i);
}
}
,然后你的for循环变成:
for(i= 1 ;i < 30; i++) {
new Thread(new MyRunnable(i)).start();
}
的号码仍然可以打印出的顺序但每个只会打印一次。
'我'需要'最后'在匿名'Thread'内部类中可见:)除此之外,什么不是正确的?预期的结果是什么,实际的结果/产出是什么? – Shark
在函数i中打印i值,它们不是1到30.有些值是2或3倍 – Shockelduck
我猜''i''是一个类字段,这就是为什么它没有最终运行。当你运行你的线程并打印'i'可能会多次增加,这就是为什么你会得到重复。 –