30/09/2018, 18:36

đa luồng trong java

em đang code chương trình lấy dữ liệu từ một list các website. Cần tạo một số lượng luồng xác định đồng thời thực hiện việc kết nối tới website. Em đang bị mắc chỗ làm sao để tạo một luồng mới chỉ sau khi luồng trước đó đã hoàn thành các task của nó. rất mong được mọi người giúp đỡ.

import java.net.URL;


public class ThreadDemo extends Thread{
    
    URL url;
    private final int N_URL = 10000; //so luong url can lay du lieu
    private final int MAX_THREAD = 30; //so luong thread duy tri lien tuc lon nhat
    int activeThread;  // so luong thread dang hoat dong
    
    public ThreadDemo(){
        
    }
    
    @Override
    public void run(){
        for (int i = 0; i< N_URL/MAX_THREAD ; i++){
            getData(url);
              //làm sao để biết thread này đã hoàn thành công viêc
            //để có thể tạo thread mới?
        }
    }
        
    public void getData(URL url){
        //do some thing to connect and get content from webpage
    }
    
    public int getActiveThread(){
        return this.activeThread;
    }
    
    public static void main(String[] args) throws InterruptedException {
        for(int j = 0; j < 30 ; j++){ //tao 30 thread song song
            ThreadDemo demo = new ThreadDemo();
            demo.start();
        }
    }
}


Khoc Trong Mua viết 20:48 ngày 30/09/2018

Bạn sử dụng Queue và ThreadPool nhé.

Bài liên quan
0