Tạo luồng bằng cách kế thừa từ lớp Thread

Một phần của tài liệu Đề tài khoa học - Tìm hiểu cơ chế phân luồng trong các chương trình java - Học viện Kỹ thuật Mật mã (Trang 25 - 28)

- Một luồng nhân chỉ có một cấu trúc dữ liệu nhân và ngăn xếp Cấu trúc dữ liệu

2.2.1Tạo luồng bằng cách kế thừa từ lớp Thread

Phần 3: Luồng trong java 2.1 Khái niệm luồng trong java

2.2.1Tạo luồng bằng cách kế thừa từ lớp Thread

Để tạo luồng bằng cách tạo lớp kế thừa từ lớp Thread, ta phải làm các công việc sau :

+ Override lại phương thức run ở lớp này, những gì trong phương thức run sẽ được thực thi khi luồng bắt đầu chạy. Sau khi luồng chạy xong tất cả các câu lệnh trong phương thức run thì luồng cũng tự hủy.

+ Tạo 1 thể hiện (hay 1 đối tượng) của lớp ta vừa khai báo.

+ Sau đó gọi phương thức start() của đối tượng này để bắt đầu thực thi luồng.

Lưu ý : Tuy ta khai báo những công việc cần làm của luồng trong phương thức run() nhưng khi thực thi luồng ta phải gọi phương thức start(). Vì đây là phường thức đặc biệt mà java xây dựng sẵn trong lớp Thread, phương thức này sẽ cấp phát tài nguyên cho luồng mới rồi chạy phương thức run() ở luồng này. Vì vậy, nếu ta gọi phương thức run() mà không gọi start() thì cũng như ta gọi 1 phương thức của 1 đối tượng bình thường và phương thức vẫn chạy trên luồng mà gọi phương thức chứ không chạy ở luồng mới tạo ra nên vẫn chỉ có 1 luồng chính làm việc chứ ứng dụng vẫn không phải là đa luồng.

Ví dụ cách tạo luồng bằng cách kế thừa từ lớp Thread :

+ Khai báo lớp mới ThreadX kế thừa từ lớp Thread và override phương thức run() :

PHP Code:

package MultiThread;

public class ThreadX extends Thread{ private String prefix="";

public ThreadX(String p) {

prefix=p; }

public void run() {

for(int i=0;i<100;i++)

System.out.println(prefix+i); }

}

+ Tạo các đối tượng thuộc lớp ThreadX và start() chúng : PHP Code:

package MultiThread; public class Main {

public static void main(String[] args) {

ThreadX t1=new ThreadX("Luồng thứ 1:"); ThreadX t2=new ThreadX("Luồng thứ 2:"); ThreadX t3=new ThreadX("Luồng thứ 3:"); t1.start();

t2.start(); t3.start(); }

}

Một phần của tài liệu Đề tài khoa học - Tìm hiểu cơ chế phân luồng trong các chương trình java - Học viện Kỹ thuật Mật mã (Trang 25 - 28)