Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

  2. #2

    Vấn đề về thread synchronized trên method có vòng lặp vô tận???

    Mọi người ơi, cho mình hỏi:
    + Nếu mình dùng synchronized, mà gặp phải việc lặp vô tận, thì làm sao để thread khác truy xuất tài nguyên đó?


    Mã:
    class Callme{
        void call(String msg){
            System.out.print("[" + msg + "]");
            while(true)
    
        }
    }
     
    class Caller implements Runnable{
        String msg;
        Callme target;
        Thread t;
        public Caller(Callme targ, String s) {
            target = targ;
            msg = s;
            t = new Thread(this);
            t.start();
        }
        @Override
        public void run() {
            synchronized(target){   // synchronized block
                target.call(msg);
            }
        }
    }
     
    public class Synch {
        public static void main(String[] args) {
     
            Callme target = new Callme();
            Caller ob1 = new Caller(target, "Hello");
            Caller ob2 = new Caller(target, "Synchronized");
            Caller ob3 = new Caller(target, "World");
            // wait for threads to end
            try {
                ob1.t.join();
                ob2.t.join();
                ob3.t.join();
            } catch(InterruptedException e) {
                System.out.println("Interrupted");
            }
        }
    }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn muốn thế nhưng bạn lại làm sai thế.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Kevin Hoang
    Mục đích bạn muốn làm gì?
    Bạn có biết tại sao cần sử dụng synchronized không chỉ cho mình đi rồi mình chỉ cho bạn [IMG]images/smilies/biggrin.png[/IMG]
    Synchronized giúp ta kiểm soát thread, tại 1 thời điểm chỉ cho phép 1 thread truy cập tài nguyên, tránh việc nhiều thread cùng truy cập 1 lúc sẽ làm dữ liệu không chính xác
    Vấn đề của mình là: khi dùng synchronized như vậy, mà giả sử trong hàm của mình bị lặp vô tận, thì làm sao xử lý (chẳng hạn như làm sao hủy thread bị lặp, để cho thread khác vào mà không chờ hoài...)

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •