Hiện tại e đang học phần multithread java có vài thắc mắc nhờ mọi người giúp đỡ
-
Kết quả của việc build 1 project trong các lần khác nhau thì cho kết quả khác nhau đúng k ạ. Ví dụ như có lần thì thread 1 chạy trước, có cái thì thread 2 chạy trước(cùng 1 hàm xuất ra chuỗi số nhưng thứ tự xuất ra màn hình các lần có thứ tự khác nhau)… cái này hình như liên quan đến độ ưu tiên.
-
Về việc đồng bộ hóa. Mong mọi người giải thích giùm e đoạn code sau( e lấy trên mạng) là tại sao thằng down lại lấy giá trị là 10 rồi giảm xuống 0 ( thật ra e chưa hiểu lắm về cách khai báo trong đoạn code (MyThread3) này lắm vì e còn gà chưa thấy kiểu khai báo ntn bao h mong mn nhẹ tay). Chỉ hiểu kết quả là chạy từ 0 đến rồi từ 10 về 0, lúc đầu e nghĩ là giá trị c nó phải reset về 0 rồi chạy xuống giá trị âm.
class Count{
int c = 0;
public void up(){
for(int i = 0; i < 10; i++){
System.out.println("up: " + c++);
}
}public void down(){ for(int i = 0; i < 10; i++){ System.out.println("down: " + c--); } }}
public class MyThread3 {
Count count = new Count();public MyThread3(){ new Thread(new Runnable() { @Override public void run() { count.up(); System.out.println("UP: " + count.c); } }).start(); new Thread(new Runnable() { @Override public void run() { count.down(); System.out.println("DOWN " + count.c); } }).start(); } public static void main(String[] args) { new MyThread3(); }}


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