Tran Dinh Trong's Blog

Stuydy and share

Luồng trong Java

Luồng là một cách thông dụng để nâng cao năng lực xử lý của các ứng dụng nhờ vào cơ chế song song. Nhờ vào luồng, người ta thiết kế các server có thể đáp ứng nhiều yêu cầu một cách đồng thời.

Trong mô hình này, Server có một Luồng phân phát (Dispatcher thread) và nhiều Luồng thực hiện (Worker thread). Luồng phân phát tiếp nhận các yêu cầu nối kết từ các Client, rồi chuyển chúng đến các luồng thực hiện còn rảnh để xử lý. Những luồng thực hiện hoạt động song song nhau và song song với cả luồng phân phát,  nhờ đó,  Server có thể phục vụ nhiều Client một cách đồng thời.

Trong Java, luồng là 1  đối tượng thuộc lớp java.lang.Thread. Một chương trình trong java có thể cài đặt luồng bằng cách tạo ra một lớp con của lớp java.lang.Thread. 

Lớp này có 3 phương thức cơ bản để điều khiển luồng là:

•  public native synchronized void start()

•  public void run()

•  public final void stop()

Phương thức start()

Chuẩn bị mọi thứ để thực hiện luồng.

Phương thức run()

Thực hiện công việc thực sự của luồng, () sẽ được kích hoạt một cách tự động bởi

phương thức start().

Phương thức stop()

Kết thúc luồng.

Luồng sẽ “chết” khi tất cả các công việc trong  phương thức run() được thực hiện

hoặc khi phương thức stop() được kích hoạt.

Ví dụ

Ví dụ sau định nghĩa lớp MyThread là một Thread có:

•  Các thuộc tính

o  name: tên của thread

o  n: số lần thread xuất hiện ra màn hình

•  Các phương thức:

o  MyThread(String name, int n):

Là phương thức khởi tạo, có nhiệm vụ gán giá trị cho 2 thuộc tính và gọi phương thức start() để cho thread hoạt động   (start() tự động gọi run())

o  run()

In n lần dòng thông báo ra màn hình rồi kết thúc thread.

o  main()

Tạo ra 4 thread thuộc lớp MyThread lần lượt có tên là Thread0, Thread1,

Thread2, Thread3. Mỗi thread có 1000 lần xuất hiện ra màn hình.

public class MyThread extends Thread{
String name;
int n;
MyThread(String name, int n){
this.name = name;
this.n = n;
System.out.println("Thread "+name+" has been created ....!");
start();
}
public void run(){
for(int i=0; i< n; i++) {
System.out.println("Hello, I'm "+ name);
System.out.println(" I go to bed now, bye bye ... wow ... ");
}
}
public static void main(String args[]){
int n = 1000;
int nt = 4 ;
for (int i=0; i< nt; i++){
MyThread t = new MyThread("Thread"+i,n);
}
}
}

Ngoài ra, lớp Thread còn có 1 số các phương thức khác
•  public static void sleep(long milliseconds) throws InterruptedException: làm
cho Thread bị nghẽn (Blocked) một khoảng thời gian mili giây xác định.
•  public final void suspend(): Chuyển Thread từ trạng thái sẳn sàng sang trạng
thái nghẽn.
•  public final void resume(): Chuyển Thread từ trạng thái nghẽn sang trạng thái
sẵn sàng.
•  public final void yield() : Chuyển Thread từ trạng thái đang chạy sang trạng
thái sẵn sàngNgoài ra, lớp Thread còn có 1 số các phương thức khác :
hực thi song song nhau.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: