8 回答

TA貢獻1836條經驗 獲得超13個贊
public class MYThread extends Thread {
private int beg;
private int end;
public MYThread (int beg,int end){ this.beg=beg; this.end=end; } @Override public void run() { this.gramDis(); } public void gramDis(){
//寫具體打印代碼
}
}
//調用
public class StartThread(){
public static void main(String[] args) {
MYThread th1=new MYThread (1,1000);
MYThread th2=new MYThread (1,1000);
th1.start();
th2.start();
}
}

TA貢獻1946條經驗 獲得超3個贊
既然使用多線程那你的目的肯定是都打印,而不是打印順序。多線程打印無序。你可以講list的size取出來,如你所講大概10000個,你開啟10個線程。那么你可以知道每個線程可以分得1000個。這樣的話你就可以確認 第一個線程分得list[0]到list[999],第二個取得list[1000]到list[1999]以此類推。

TA貢獻1859條經驗 獲得超6個贊
import java.util.ArrayList;
import java.util.List;
public class TestThread {
public static void main(String[] args){
List list = new ArrayList();
for(int i=0;i<10000;i++){
list.add(i);
}
for(int i=0;i<10;i++){
new MyThread(i*1000,list).start();
}
}
}
class MyThread extends Thread {
private int start;
private List list;
public MyThread(int start,List list){
this.start=start;
this.list=list;
}
public void run(){ for(int i=start;i<start+1000;i++){ System.out.println(list.get(i)); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
}

TA貢獻1777條經驗 獲得超10個贊
如果沒有打印順序要求的話,那么在初始化每個Thread對象的時候指定其打印list的范圍,比如1 - 1000,然后根據這個范圍循環讀取list進行打印。

TA貢獻1875條經驗 獲得超3個贊
可以用Executor來管理你的線程,其中的newFixedThreadPool()方法可以用來開啟固定數量的線程。也可以用newSingleThreadExecutor()來一次執行單一線程的功能。
添加回答
舉報