亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JAVA線程問題

JAVA線程問題

慕少森 2019-03-21 19:19:43
我有一個List集合,里面放了10000條數據,從1 -- 10000 int類型數字,現在我想啟動10個線程,第一個線程打印1 -- 1000 ,第二個線程打印1001 -- 2000,一次類推。10個線程都是同時啟動的,所以打印的數據應該是凌亂的,可能是1、2、1001、2001、4001、3001、5001......我對線程不是很熟悉,所以這樣的功能不知道怎么做,希望大家知道下……
查看完整描述

8 回答

?
開心每一天1111

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();
}
}


查看完整回答
反對 回復 2019-04-30
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

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


查看完整回答
反對 回復 2019-04-30
?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

thread.join()


查看完整回答
反對 回復 2019-04-30
?
BIG陽

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();
        }
    }
}

}


查看完整回答
反對 回復 2019-04-30
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

同意樓上!
多線程就是為了能夠同時執行多個不同操作
如果要等一個線程執行完打印任務之后再執行另一個打印線程,
那就完全沒必要使用多線程

查看完整回答
反對 回復 2019-04-30
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

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


查看完整回答
反對 回復 2019-04-30
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

可以用Executor來管理你的線程,其中的newFixedThreadPool()方法可以用來開啟固定數量的線程。也可以用newSingleThreadExecutor()來一次執行單一線程的功能。


查看完整回答
反對 回復 2019-04-30
  • 8 回答
  • 0 關注
  • 543 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號