我有一個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'可能會多次增加,這就是爲什麼你會得到重複。 –