30/09/2018, 20:05
Xử lý luồng trong java
Xin mọi người cho em hỏi :
em đang sử dụng phương thức A trong luồng B1.
giờ em muốn sử dụng phương thức A trong luồng B2 và đóng luồng B1
có cách nào để tự đóng luồng B1 khi mình gọi luồng B2 không ạ?
Bài liên quan
Hình như có từ khóa synchronized
Nhưng dùng từ khóa này thì luồng B1 thực hiện xong phương thức A mới cho luồng B2 sử dụng phương thức A.
'Thread t = new Thread() {
@Override
public void run() {
String string = null;
String newString = null;
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < sensorList[element].getList().size(); j++) {
newString = sensorList[element].getList().get(j).toString() + “\n”;
synchronized(this){
mainView.getTextArea().setText(string);}
string = string + “\n” + newString;
try {
sleep(10500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Ví dụ như mã trên em cũng dùng thử synchronized để đồng bộ khi xử dụng .getTextArea(). Nhưng khi em chạy 2 luồng vẫn chạy xong xong chứ không thực hiện xong 1 luồng mới đến luồng kia anh ạ?
Tìm hiểu giữa sleep và wait() nha em. thường dùng wait() cho multi-thread-synchronization.
Đại ca giờ mới thấy mặt . multi-thread-synchronization nghĩa là sao hả anh?
nghĩa là đồng bộ hóa khi có nhiều luồng cùng chạy
Giả sử có 2 thread được tạo t1 và t2
Bạn thử dùng
xem thử nó có đồng bộ với nhau không
dùng
wait() or notify();
bạn ơi. cái này là đồng bộ luồng.bạn tham khảo code này coi không biết có phải cái bạn cần không