01/10/2018, 17:37

Cách truyền dữ liệu giữa các thread?

Chào mọi người, em có một câu hỏi như thế này ạ?

class nhapA implements Runnable {
    int a;
    public void run(){
        a = 0;
        try {
            while(a == 0){
                Scanner sc = new Scanner(System.in);
                a = sc.nextInt();
            }
        }
       catch(Exception e) {
            System.out.print(e);
        }
    }
}

class inRaA implements Runnable {

}

Giờ em muốn lấy dữ liệu mình đã nhập vào thread nhapA để in bằng inRaB thì phải viết hàm main làm thế nào ạ… Tất nhiên là nếu như a khác 0 ạ…
Em cảm ơn…

Trương Tấn Phát viết 19:46 ngày 01/10/2018

Dùng trường (biến) tĩnh toàn cục để lưu a.

Giang Phan viết 19:52 ngày 01/10/2018

Có thể sử dụng Callable, Future. Cách này thường được sử dụng. Sau khi Thread NhapA thực thi xong thì gởi kết quả trả về sang Thread InRaA.
Hoặc sử dụng CompleteableFuture tronng Java 8 sẽ đơn giản hơn nữa.

GP Coder – 2 Mar 18

Lập trình đa luồng với Callable và Future trong Java - GP Coder (Lập trình Java)

Hướng dẫn lập trình Java, Design Pattern, Spring, JSF, Primefaces, Collection, Multi-thread, Webservice, SQL, Report, Apache POI.

chai65 viết 19:45 ngày 01/10/2018

Mình bổ sung thêm cách:
Cho 2 object nhapA & inRaA reference tới 1 object chung qua constructor của 2 class hoặc closure trong Java 8 (Lambda Expression)

Bài liên quan
0