www.updatesofts.com
!
"
+
&
8.7
Luồng hiểm
Một chương trình Java bị ngắt chỉ sau khi tất cả các luồng bị chết. Có hai kiểu luồng
trong một chương trình Java:
Các luồng người sử dụng
Luồng hiểm
Người sử dụng tạo ra các luồng người sử dụng, trong khi các luồng được chỉ định
như là luồng “background” (nền). Luồng hiểm cung cấp các dịch vụ cho các luồng khác.
Máy ảo Java thực hiện tiến trình thoát, khi và chỉ khi luồng hiểm vẫn còn sống. Máy ảo
Java có ít nhất một luồng hiểm được biết đến như là luồng “garbage collection” (thu lượm
những dữ liệu vô nghĩa - dọn rác). Luồng dọn rác thực thi chỉ khi hệ thồng không có tác
vụ nào. Nó là một luồng có quyền ưu tiên thấp. Lớp luồng có hai phương thức để thỏa
thuận với các luồng hiểm:
public void setDaemon(boolean on)
public boolean isDaemon()
8.8
Đa luồng với Applets
Trong khi đa luồng là rất hữu dụng trong các chương trình ứng dụng độc lập, nó
cũng đáng được quan tâm với các ứng dụng trên Web. Đa luồng được sử dụng trên web,
cho ví dụ, trong các trò chơi đa phương tiện, các bức ảnh đầy sinh khí, hiển thị các dòng
chữ chạy qua lại trên biểu ngữ, hiển thị đồng hồ thời gian như là một phần của trang Web
v.vv… Các chức năng này cầu thành các trang web làm quyến rũ và bắt mắt.
Chương trình Java dựa trên Applet thường sử dụng nhiều hơn một luồng. Trong đa
luồng với Applet, lớp java.applet.Applet là lớp con được tạo ra bởi người sử dụng định
nghĩa applet. Từ đó, Java không hổ trợ nhiều kế thừa với các lớp, nó không thể thực hiện
được trực tiếp lớp con của lớp luồng trong các applet. Tuy nhiên, chúng ta
sử dụng một
đối tượng của luồng người sử dụng đã định nghĩa, mà các luồng này, lần lượt, dẫn xuất từ
lớp luồng. Một luồng đơn giản xuất hiện sẽ được thực thi tại giao diện (Interface)
Runnable
Chương trình 8.3 chỉ ra điều này thực thi như thế nào:
Chương trình 8.3
import java.awt.*;
import java.applet.*;
public class Myapplet extends Applet implements Runnable {
int i;
Thread t;
/**
* Myapplet constructor comment.
*/
public void init(){
t = new Thread(this);
t.start();
}
public void paint(Graphics g){
g.drawString(" i = "+i,30,30);
}
public void run(){
for(i = 1;i<=20;i++){