1. Trang chủ
  2. » Địa lý lớp 12

welcome to nguyenhuuthe sites

21 16 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 0,95 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Khi thread được start, nó sẽ gọi thực thi lệnh trong phương thức run() của Runnable liên kết với nó. 19.[r]

Trang 1

Nguyễn Hữu Thể

LẬP TRÌNH HỆ THỐNG MẠNG

Trang 2

THREAD

Hệ điều hành đa nhiệm cổ điển:

 Đơn vị cơ bản sử dụng CPU là quá trình

 Mỗi quá trình có một không gian địa chỉ và một không gian trạng

thái riêng

Hệ điều hành đa nhiệm hiện đại, hỗ trợ Thread:

 Đơn vị cơ bản sử dụng CPU là Thread

 Mỗi quá trình có một không gian địa chỉ và nhiều Thread điều khiển

 Mỗi Thread có bộ đếm chương trình, trạng thái các thanh ghi và

ngăn xếp riêng

 Thread của một quá trình có thể chia sẻ nhau không gian địa chỉ :

Biến toàn cục, tập tin, chương trình con, hiệu báo,

Thread chia sẻ thời gian sử dụng CPU => Thread cũng có các

Trang 3

Multi-Thread

3

Trang 4

Multi-Thread (2)

Ví dụ:

 So sánh thời gian chạy giữa các giải thuật Sort:

Trang 5

Multi-Thread (3)

Thread trong Java là một đối tượng của lớp java.lang.Thread

― Một chương trình cài đặt Thread bằng cách tạo ra các lớp con của lớp Thread

― Lớp Thread có 3 phương thức cơ bản:

 public static synchronized void start () :

• Chuẩn bị mọi thứ cần thiết để thực hiện Thread

 public void run ():

• Chứa mã lệnh thực hiện công việc thực sự của Thread

• run() được gọi một cách tự động bởi start()

 public void stop () : kết thúc một Thread

― Thread kết thúc khi:

 Hoặc tất cả các lệnh trong run() đã được thực thi

 Hoặc phương thức stop() của Thread được gọi 5

Trang 6

Multi-Thread (4)

― Để lập trình đa tiến trình, lớp dẫn xuất từ lớp Thread được

cài đặt sau đó override phương thức run()

Khi tiến trình cần chạy thì phương thức start() của tiến

trình được gọi thực hiện.

Trang 7

Do đó, ta dùng các constructor của lớp dẫn xuất chứ không

dùng các constructor của thread một cách trực tiếp.

7

Trang 8

Thread - constructor

― Các constructor:

Thread() Tạo Thread với giá trị mặc định

Thread(String name) Tạo Thread với tên cho trước

Thread(Runnable target) Tạo thread liên kết với đối tượng Runnable

Thread(Runnable target, String

name)

Tạo Thread liên kết với đối tượng Runnable

và có tên cho trước

Trang 9

Thread – Cấu trúc chương trình

class MyThread extends Thread // Kế thừa lớp Thread

Tạo đối tượng Thread và gọi thực thi:

MyThread t = new MyThread(); // Tạo tiểu trình

9

Trang 10

Ex 1: Lớp MyThread cơ bản

class MyThread extends Thread { // Kế thừa lớp Thread

public void run() // Override phương thức run

public static void main(String[] args) {

MyThread t1 = new MyThread(); // Tạo Thread

MyThread t2 = new MyThread();

Trang 11

Ex 1: Lớp MyThread cơ bản – Kết quả

Trang 12

Ex 2: MyThread2

― Các thuộc tính

 name: tên của thread

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

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

 MyThread2(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())

 run()

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

Trang 13

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." ); }

}

public static void main(String args[]) {

int n = 10;

int numThread = 4;

for (int i = 0; i < numThread; i++) {

MyThread2 t = new MyThread2( "Thread" + i, n);

} }

}

Trang 14

Ex 2: MyThread2 (3) – Kết quả

Thread Thread0 has been created !

Thread Thread1 has been created !

Hello, I'm Thread0

I go to bed now, bye bye

Thread Thread2 has been created !

Hello, I'm Thread1

I go to bed now, bye bye

Hello, I'm Thread0

I go to bed now, bye bye

Hello, I'm Thread1

I go to bed now, bye bye

Thread Thread3 has been created !

Hello, I'm Thread1

I go to bed now, bye bye

Hello, I'm Thread0

I go to bed now, bye bye

Hello, I'm Thread2

Hello, I'm Thread1

I go to bed now, bye bye Hello, I'm Thread3

I go to bed now, bye bye Hello, I'm Thread0

I go to bed now, bye bye Hello, I'm Thread3

I go to bed now, bye bye Hello, I'm Thread2

I go to bed now, bye bye Hello, I'm Thread3

I go to bed now, bye bye Hello, I'm Thread0

I go to bed now, bye bye Hello, I'm Thread1

I go to bed now, bye bye Hello, I'm Thread0

Trang 15

o public final void suspend()

o Chuyển Thread từ trạng thái sẳn sàng sang trạng thái nghẽn

o public final void resume()

o Chuyển Thread từ trạng thái nghẽn sang trạng thái sẵn sàng

o public final void yield()

o Chuyển Thread từ trạng thái đang chạy sang trạng thái sẵn sàng

15

Trang 17

Thực thi thread

Để thực thi thread, ta gọi phương thức void start()

― Khi được thực thi, thread sẽ chạy các lệnh trong phương thức

Trang 19

Interface Runnable

Có thể tạo class implement interface Runnable

Class phải hiện thực phương thức void run() của interface này.

 Tạo thread liên kết với Runnable thông qua constructor tương ứng của lớp Thread

 Khi thread được start, nó sẽ gọi thực thi lệnh trong phương

thức run() của Runnable liên kết với nó.

19

Trang 20

Runnable - EX 1

public class HelloRunnable implements Runnable {

public void run() {

System.out.println("Hello from a thread!");}

public static void main(String args[]) {

(new Thread(new HelloRunnable())).start();

}

}

Trang 21

public RunnableThread(String threadName) {

runner = new Thread( this , threadName); //(1)Create a new thread

System.out.println( runner getName());

runner start(); // (2) Start the thread.

}

public void run() { // Display info about this particular thread

System.out println(Thread.currentThread());

}

public static void main(String[] args) {

Thread thread1 = new Thread( new RunnableThread(), "thread1" ); Thread thread2 = new Thread( new RunnableThread(), "thread2" ); RunnableThread thread3 = new RunnableThread( "thread3" );

// Display info about the main thread

System.out println(Thread.currentThread());

} }

thread3 Thread[thread3,5,main] Thread[thread1,5,main] Thread[thread2,5,main] Thread[main,5,main]

Ngày đăng: 21/01/2021, 14:59

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w