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…

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

2 Likes

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.

2 Likes

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)

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?