Gặp vấn đề khi chạy đa luồng

Em chào các bác ạ.
Em đang làm một bài tập về nhà, yêu cầu cần sử dụng đa luồng.
Nhưng em gặp vấn đề không thể giải thích được.
Em có một custome của JPanel trong đó em implement MouseListener. Khi click vào, em sẽ lấy giá trị hiện tại của x, y.

@Override
    public void mouseClicked(MouseEvent e) {
        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        Constants.xClick = e.getX();
        Constants.yClick = e.getY();
       // System.out.println(Constants.xClick + " -- "+ Constants.yClick);
        
    }

Constants là một lớp mà có hai biến static xClick và yClick.
Em tạo ra một luồng chạy liên tục kiểm tra xClick và yClick.

    @Override
    public void run() {
        //super.run(); //To change body of generated methods, choose Tools | Templates.
        while(true){
            if(Constants.yClick != -1 && Constants.xClick != -1){
                System.out.println("Fuck it");
            }
        }
    }

Với điều kiện như trên thì dù em click vào màn hình bao nhiêu lần thì cũng không hiện dòng chữ.
Nhưng với :

    @Override
    public void run() {
        //super.run(); //To change body of generated methods, choose Tools | Templates.
        while(true){
            if(Constants.yClick == -1 && Constants.xClick == -1){
                System.out.println("Fuck it");
            }
        }
    }

Thì dòng chữ in ra liên tục, nhưng đến khi em click vào màn panel thì nó dừng lại.

Mong cao nhân nào hiểu được vấn đề, giải thích giúp em với ạ,
Em cảm ơn ạ.

Xin lỗi bạn.
Ban đầu thì giá trị xClick, yClick được gán = - 1.
Vì vậy khi điều kiện là

thì dòng chữ in ra liên tục.
Nhưng khi click vào panel thì giá trị của xClick và yClick là khác với - 1, nên nó sẽ dừng.

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