Tôi muốn chạy hai chủ đề cái khác, không sử dụng sleep() hoặc Locks, nhưng bế tắc sẽ xảy ra! Có gì sai với mã của tôi? Tôi đã sử dụng wait() và thông báoAllAll() và một đối tượng Object.Java chờ và thông báo làm bế tắc
public class Test {
public static void main(String[] args) throws InterruptedException {
PrintChar a = new PrintChar('a');
PrintChar b = new PrintChar('b');
Thread ta = new Thread(a);
Thread tb = new Thread(b);
ta.start();
tb.start();
}
}
class PrintChar implements Runnable {
final Object o = new Object();
char ch;
public PrintChar(char a) {
ch = a;
}
@Override
public void run() {
for (int i = 0; i < 100; i++) {
synchronized (o) {
System.out.print(ch);
try {
o.wait();
o.notifyAll();
} catch (InterruptedException ex) {
}
}
}
}
}
Tôi không bao giờ hiểu được những câu hỏi này. Nếu bạn muốn thực hiện tuần tự, tại sao bạn sử dụng các chủ đề? – EJP
Đừng bận tâm đến EJP! Chỉ cần thực hành! – John