Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution
    Đăng nhập
    Đăng nhập

    Đề bài: In 1..N theo thứ tự bằng N thread đồng bộ với synchronized

    📖Cần ôn lý thuyết? Đọc bài giảng Buổi 9: Lập trình đa luồng — khóa Lập trình Java

    Tạo N thread, mỗi thread phụ trách in đúng 1 số từ 1 đến N. Yêu cầu kết quả in ra theo đúng thứ tự 1 2 3 ... N (cách nhau bởi 1 dấu cách, kết thúc bằng newline).

    1. Sử dụng một đối tượng lock chung và một biến next (số kế tiếp cần in).
    2. Mỗi thread trong vòng lặp synchronized (lock) đợi tới khi next == myNumber (dùng lock.wait()).
    3. Khi đến lượt, ghi vào StringBuilder dùng chung (cũng phải synchronized), tăng next, gọi lock.notifyAll().
    4. Sau khi tất cả thread kết thúc (join()), main in ra StringBuilder.

    Lưu ý: KHÔNG được in trực tiếp trong run() để tránh interleaving không xác định — ghi vào StringBuilder chung trong khối synchronized.

    • Định dạng đầu vào:
      • Dòng 1: N (1 ≤ N ≤ 100)
    • Ràng buộc đầu vào:

      1 ≤ N ≤ 100

    • Định dạng đầu ra:

      Một dòng: 1 2 3 ... N.

    Ví dụ:

    Đầu vào:

    5
    

    Đầu ra:

    1 2 3 4 5
    

    Giải thích:

    5 thread in 1..5 theo thứ tự.

    Đầu vào:

    1
    

    Đầu ra:

    1
    

    Giải thích:

    Một thread in số 1.

    Đầu vào:

    10
    

    Đầu ra:

    1 2 3 4 5 6 7 8 9 10
    

    Đầu vào:

    20
    

    Đầu ra:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
    

    Chủ đề

    ☕ JavaJavaThreadTất cả môn học

    Đang tải editor...