// ThreadSync.javaclass MyThread extends Thread {
static String message[]={"I","love","Java."};
public MyThread(String id) {
// Gọi hàm dựng (constructor) của lớp Thread cha
super(id);
}
public void run() {
Sync.displayList(getName(), message);
}
void waiting() {
try {
sleep(2000);
}
catch(InterruptedException e){
System.out.println("Interrupted");
}
}
};
class Sync {
public static synchronized void displayList(String name, String list[]) {
/* Nếu không dùng từ khóa synchronized thì sẽ không
đảm bào một luồng làm xong hết công việc của nó
rồi một luồng khác mới được bắt đầu chạy.
*/
for (int i=0; i< list.length; ++i) {
MyThread thread = (MyThread)Thread.currentThread();
// Hàm waiting đã định nghĩa ở trên
thread.waiting();
System.out.println(name + list[i]);
}
}
};
public class ThreadSync {
public static void main(String args[]) {
MyThread thread1 = new MyThread("Thread 1: ");
MyThread thread2 = new MyThread("Thread 2: ");
thread1.start(); // Hàm run của thread1 được gọi
thread2.start(); // Hàm run của thread2 được gọi
}
};
No comments:
Post a Comment