Xu Ly Da Luongjava9

  • Uploaded by: HocLieuMo
  • 0
  • 0
  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Xu Ly Da Luongjava9 as PDF for free.

More details

  • Words: 871
  • Pages: 3
12/6/2007

Xử lý đa luồng trong Java

Xử lý đa luồng trong Java

Thực thi của Java cũng chính là đa luồng



Giảng viên: Nguyễn Hoài Sơn Bộ môn Mạng và Truyền thông máy tính Khoa Công nghệ thông tin

Network programming

1

Khởi tạo luồng 

Kế thừa lớp Thread

Có 2 cách khởi tạo luồng 



Lớp Thread

Kế thừa lớp Thread 

start () run() …

Tạo một lớp kế thừa lớp Thread và thay thế hàm run()

Thực thi Runnable Interface 

2

Network programming

Đối tượng của lớp kế thừa

Lớp kế thừa thay thế

Kế thừa

start () run() …

Khởi tạo đối tượng

start () run() …

Thực thi Runnable Interface và chuyển đối tượng Runnable vào hàm khởi tạo Thread

Network programming

3

Network programming

public static void main(String[] args){ // Tạo 2 đối tượng kiểu ExThread ExThread t1 = new ExThread(); ExThread t2 = new ExThread();

Ví dụ về kế thừa lớp Thread import java.io.*; class ExThread extends Thread{ // kế thừa lớp Thread public void run() { // Hàm thực thi của luồng for(int i = 1; i <= 10; i++) { System.out.println(getName() + ":" + i); try { sleep(1000); } catch (InterruptedException e) { } } } Network programming

4

// Bắt đầu thực thi luồng mới t1.start(); t2.start(); } }

5

Network programming

6

1

12/6/2007

Thực thi Runnable interface Lớp thực thi

Runnable Interface run()

thực thi

import java.io.*;

run() Khởi tạo đối tượng

Đối tượng của lớp thực thi

run()

Lớp Thread start () run() …

Ví dụ về thực thi Runnable Interface

Khởi tạo đối tượng (gán tham số cho hàm khởi tạo là đối tượng của lớp thực thi Runnable interface )

class ThreadRunnable implements Runnable{ public void run() { for(int i = 1; i <= 10; i++) { //(3) System.out.println("thread"+ ":" + i); try { Thread.sleep(1000); } catch (InterruptedException e) { } } }

Đối tượng của lớp Thread

start () run() …

Network programming

7

Ví dụ về thực thi Runnable Interface (2)

Kế thừa Thread hay thực thi Runnable interface

public static void main(String[] args){ ThreadRunnable tr1 = new ThreadRunnable(); ThreadRunnable tr2 = new ThreadRunnable(); Thread t1 = new Thread(tr1); Thread t2 = new Thread(tr2); t1.start(); t2.start(); }



}

Network programming

Có khả năng thi hành

Lập lịch

Phải thực thi Runnable trong trường hợp muốn kế thừa một lớp khác không phải Thread class ExAppletThread extends Applet, Thread { …. }

X

class ExAppletThread extends Applet implements Runnable { …. }

O

9

10

Network programming

Máy chủ xử lý đồng thời đa luồng hướng kết nối

Tuổi sống của một luồng Khởi tạo

8

Network programming

Thi hành

master Không được thi hành Kết thúc sleep notìfy() notifyAll()

sleep wait

thread1

sleep()

thread2

threadn

wait()

blocking I/O

Xóa lock

lock

Server application processes

Socket for connection requests

Xử lý synchronized

Network programming

11

socket for individual connections Network programming

Operating system 12

2

12/6/2007

Thực thi máy chủ xử lý đồng thời đa luồng hướng kết nối 1.

2.

Bước 1 Luồng chính Tạo một đối tượng ServerSocket



ServerSocket servSocket = new ServerSocket(1234); Bước 2 Luồng chính Lặp lại vòng lặp 1. Đưa máy chủ vào trạng thái chờ Socket link = servSocket.accept(); 2. Tạo một đối tượng Thread và gọi hàm start() để thi hành luồng mới

Network programming



Network programming







Network programming

16

Hàm đồng bộ hóa 

Ấn định việc truy cập có loại trừ vào một đối tượng bởi từ khóa synchronized  Để thi hành một số dòng codes cùng nhau, gói chúng lại trong một khối đồng bộ hóa  Dừng tất cả các luồng sử dụng một tài nguyên chung



14

Các luồng chia xẻ bộ nhớ, xử lý file (file handles), sockets, và các tài nguyên khác Nếu hai luồng muốn sử dụng cùng một tài nguyên tại một thời điểm nào đó, một trong 2 luồng phải đợi luồng kia kết thúc việc sử dụng tài nguyên

15

Khối đồng bộ hóa 

máy khách Gửi và nhận dữ liệu thông qua đối tượng socket kết nối x Bước 2 luồng con: Đóng socket kết nối và trả về

Loại trừ lẫn nhau

EchoServer.java

Network programming

Bước 1 luồng con: Hàm Run() xử lý yêu cầu của

13

Ví dụ về máy chủ Echo 

Thực thi máy chủ xử lý đồng thời đa luồng hướng kết nối(2)



Đồng bộ tất cả hàm trên đối tượng hiện tại (tham chiếu thís) bằng việc thêm từ khóa synchronized vào khai báo hàm Dùng đồng bộ hóa có thể  

Giảm tốc độ xử lý của chương trình đến 3 lần hay hơn Làm tăng khả năng deadlock xảy ra

Chỉ ngăn cản các luồng đồng bộ hóa trên cùng một đối tượng không sử dụng tài nguyên chung.

E.g.

public synchronized void writeEntry(String message) throws IOException { Date d = new Date( ); out.write(d.toString( )); out.write('\t'); out.write(message); out.write("\r\n"); }

synchronized (System.out) { System.out.print(input + ": "); for (int i = 0; i < digest.length; i++) { System.out.print(digest[i] + " "); } System.out.println( ); } Network programming

17

Network programming

18

3

Related Documents

Xu Ly Da Luongjava9
October 2019 14
Xu Ly Min Da
October 2019 25
Xu Ly Da Luong8
October 2019 24
Xu Ly
November 2019 29
Ap 5(da Xu Ly So)
June 2020 4
Ap 4(da Xu Ly So)
June 2020 3

More Documents from ""

Ltdt6
October 2019 9
Dstt05
October 2019 7
Otmat08
October 2019 10
Otmat04
October 2019 11
Sthc04
October 2019 10
Pluatdc5
October 2019 7