WTai.Tk
HOMEUPLOADFORUM
22/05/201816:49:45
Chào: khách!
Đăng nhập
Đăng ký
HOME > Java > Hướng dẫn lập trình
Tìm kiếm | Lượt xem: 530
↓↓ Bàn luận về Thread
* Huyền Vũ (VIP) [Off]
Exp: 59 | 35/63
Xu: 99051570
Sing me to sleep ...
Cách đây 10 tháng #1
Bàn về Thread

Thực ra vấn đề này mình cũng suy nghĩ khá lâu và cũng thử test 1 số code rồi nhưng vẫn chưa được thông lắm, lên đây làm cái top thảo luận tham khảo ý kiến ae luôn

Như ae cũng biết có 2 cách để tạo 1 thread là

public class a extends Thread{

public void run(){
//code here
}
}




public class a implements Runnable{

public void run(){
//code here
}
}


Với cách 2 thì bắt buộc phải override void run chắc ae cũng biết rồi

Vấn đề của mình ở đây là :
Trong các app thường ae sẽ thấy nhiều tiến trình cùng chạy để làm các nhiệm vụ không liên quan đến nhau, nhiều tiến trình cùng chạy sẽ gây tốn hiệu năng khá lớn ( ae hình dung 1 cái cửa mà chục thằng đâm đầu vào thì tất nhiên là chật hơn 1 thằng đâm vào rồi ) . Để kích hoạt các thread thì thường có các đoạn mã là

// biến để bật tắt thread
 public static boolean x=false;
 
 //....
 
 x=!x;  // x=true chạy thread ngược lại thì dừng
 new Thread(new a()).start();
 
 public void run(){
 while (x){
 //run here
 }
}
}



Bây giờ mình có 3 tiến trình muốn chạy theo ý kiến ae thì đoạn mã nào sẽ chạy nhanh hơn tối ưu hơn và không bị xung đột? vì sao?

cách 1 : tạo 3 class extends Thread và bật tắt từng thread

// Thread 1 -class 1
 public static boolean x2=false;
 
 //....
 
 x1=!x1;  // x=true chạy thread ngược lại thì dừng
 new Thread(new a1()).start();
 
}
 // Thread 2
 public static boolean x2=false;
 
 //....
 
 x3=!x3;  // x=true chạy thread ngược lại thì dừng
 new Thread(new a1()).start();
 // tương tự cho thread 3
}



và cách thứ 2 : gộp chung 1 thread

// biến để bật tắt thread tổng
 public static boolean x=false;
 // từng thread con
  public static boolean x1=false;
   public static boolean x2=false;
    public static boolean x3=false;
 //....
 
 x=!x;  // x=true chạy thread tổng 
 new Thread(new a()).start();
 
 //
 public void run(){
 while (x){
  if(x1) // run code 1
  if(x2) //run code 2
  if(x3) // run code 3
 
 }
}
}



Mong ý kiến đóng góp của anh em
* ServantOfEvil (Spam) [Off]
Exp: 324 | 381/211
Xu: 96669051
Tôi bị điên.
Cách đây 10 tháng #2
Nhiều thread đỡ phải đợi nhau
[1] Huyền Vũ,
* Darkrai (FMod) [Off]
Exp: 118 | 227/8
Xu: 90203970
Cách đây 10 tháng #3
Thread làm gì làm giảm hiệu năng ứng dụng mà làm tăng thì đúng hơn do tận dụng thời gian chờ của cpu
//Không nói đến trường hợp dùng Thread ko hợp lý dẫn đến Memory Leak
[1] Huyền Vũ,
* Huyền Vũ (VIP) [Off]
Exp: 59 | 35/63
Xu: 99051570
Sing me to sleep ...
Cách đây 10 tháng #4
Gửi từ: Darkrai

Thread làm gì làm giảm hiệu năng ứng dụng mà làm tăng thì đúng hơn do tận dụng thời gian chờ của cpu //Không nói đến trường hợp dùng Thread ko hợp lý dẫn đến Memory Leak



K dùng thread thì dùng gì ạ mong cao nhân chỉ giáo
* Darkrai (FMod) [Off]
Exp: 118 | 227/8
Xu: 90203970
Cách đây 10 tháng #5
Gửi từ: Huyền Vũ

K dùng thread thì dùng gì ạ mong cao nhân chỉ giáo


Dùng và bắt buộc dùng Thread

Thực ra Thread chỉ fake đa tiến trình thôi vì thiực tế 1 nhân CPU chỉ làm 1 việc tại 1 thời điểm, nhưng do việc chuyển đổi giữa các thread để cpu làm việc rất nhanh nên nhìn gần như là chúng chạy song song
* ServantOfEvil (Spam) [Off]
Exp: 324 | 381/211
Xu: 96669051
Tôi bị điên.
Cách đây 10 tháng #6
Gửi từ: Huyền Vũ

K dùng thread thì dùng gì ạ mong cao nhân chỉ giáo

ý bác ấy là dùng nhiều thread chỉ có lợi, ko có hại, tận dụng đc thời gian chờ của cpu
[1] Huyền Vũ,
* Darkrai (FMod) [Off]
Exp: 118 | 227/8
Xu: 90203970
Cách đây 10 tháng #7
Gửi từ: ServantOfEvil

ý bác ấy là dùng nhiều thread chỉ có lợi, ko có hại, tận dụng đc thời gian chờ của cpu


Dùng thừa thải đẩy CPU lên 100% thì cũng nát
* SystemError (VIP) [Off]
Exp: 195 | 129/66
Xu: 59704840
Http://MyCoder.Cf
Cách đây 10 tháng #8
Hóng
* Huyền Vũ (VIP) [Off]
Exp: 59 | 35/63
Xu: 99051570
Sing me to sleep ...
Cách đây 10 tháng #9
Gửi từ: Darkrai

Dùng thừa thải đẩy CPU lên 100% thì cũng nát


Nếu v theo ý bác thì 2 cách chạy 3 Thread trên là như nhau?
* ServantOfEvil (Spam) [Off]
Exp: 324 | 381/211
Xu: 96669051
Tôi bị điên.
Cách đây 10 tháng #10
Gửi từ: Darkrai

Dùng thừa thải đẩy CPU lên 100% thì cũng nát

nát của mấy thằng user kệ mẹ chúng nó mà project to đến đâu mà đẩy lên 100%
12>>
Bài viết cùng chuyên mục
Hướng dẫn viết app xem thời khoá biểu online không cần host! [18]
Một số phương thức của lớp RecordStore, và help :v [3]
Bàn luận về Thread [19]
Xin up lại bài Liên kết class [37]
[HD j2me] Tạo thuật toán giải mã và mã hóa ảnh socogame đuôi .rsp [17]
Chia sẻ bài viết
BBCode:

Link:

Link nhanh:
Trực tuyến [0 user] [2 khách]
Không có thành viên nào trực tuyến!