48
1 Chng 11: Lp trình MultiThread Chng 11: Lp trình MultiThread GVLT: Tr n Anh Dng Lp trình hng i tng Lp trình hng i tng

Chuong111.LaptrinhMultiThreading-New

Embed Size (px)

Citation preview

Page 1: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 1/48

1

Ch ng 11: L p trình MultiThreadCh ng 11: L p trình MultiThread

GVLT: Tr n Anh D ng

L p trình h ng i t ngL p trình h ng i t ng

Page 2: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 2/48

2

N i dungN i dung

a nhi m và a tuy nT o l p và s d ng tuy n

} L p Thread} Giao ti p Runnable

ng b hoá các tuy nTuy n maNhóm tuy nBài t p

Page 3: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 3/48

3

a nhi m (multitasking)a nhi m (multitasking)

a nhi m là k thu t cho phép nhi u công vi c cth c hi n cùng m t lúc trên máy tính.N u có nhi u CPU, các công vi c có th c th c hi n

song song trên t ng CPU. Trong tr ng h p nhi u côngvi c cùng chia s m t CPU, t ng ph n c a m i côngvi c s c CPU th c hi n xen k .

Page 4: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 4/48

4

H ai k thu t a nhi m c b n:} a ti n trình (Process-based multitasking):

Nhi u ch ng trình ch y ng th i. M ich ng trình có m t vùng d li u c l p.

} a tuy n (Thread-based multitasking): M tch ng trình có nhi u tuy n cùng ch y ngth i. Các tuy n dùng chung vùng d li u c ach ng trình.

a nhi m (multitasking)a nhi m (multitasking)

Page 5: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 5/48

5

Tuy n và a tuy nTuy n và a tuy n

Tuy n là m ch thi hành c l p c a m t tác vtrong ch ng trình.M t ch ng trình có nhi u tuy n th c hi n cùnglúc g i là a tuy n.

Page 6: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 6/48

6

T o tuy nT o tuy n

Tuy n trong Java c ng là các i t ng.Có hai cách t o tuy n

} Th a k t l p java.lang.Thread} Cài t giao ti p java.lang.Runnable

Page 7: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 7/48

7

T o tuy nT o tuy n -- Cách 1: K th a t ThreadCách 1: K th a t Thread

Page 8: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 8/48

8

K hi m t tuy n c t o ra, nó c n g i start() t tuy n tr ng thái s n sàng. Ti p theo h

th ng s th c thi các câu l nh trong run() c atuy n ó.Tuy n s k t thúc khi làm h t l nh trong run()ho c khi stop() c g i.

T o tuy nT o tuy n -- Cách 1: K th a t ThreadCách 1: K th a t Thread

Page 9: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 9/48

9

T o tuy nT o tuy n -- Cách 1: K th a t ThreadCách 1: K th a t Thread

Page 10: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 10/48

10

T o tuy nT o tuy n -- Cách 2: Cài t RunnableCách 2: Cài t Runnable

Page 11: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 11/48

11

u tiênu tiên

Các tuy n trong Java có u tiênt Thread.MIN_PRIORITY (giá tr 1) nThread.MAX_PRIORITY (giá tr 10)Tuy n có u tiên càng cao thì càng s m

c th c hi n và hoàn thành. u tiên m c nh c a các tuy n là

Thread.NORM_PRIORITY (giá tr 5 ).M t tuy n m i s th a k u tiên t tuy nt o ra nó.

Page 12: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 12/48

12

B l p l chB l p l ch

B l p l ch (scheduler) c a Java qu n lý các tuy ntheo c ch phân chia th i gian (timeslicing).T ng tuy n s c c p m t kho ng th i gian ng n

(time quantum) s d ng CPU.Trong khi th c thi, n u ã h t th i gian c c p thìdù ch a k t thúc tuy n c ng ph i t m d ng cho

các tuy n khác cùng u tiên dùng CPU.Các tuy n cùng u tiên luân phiên s d ng CPUtheo ki u xoay vòng (round-robin).

Page 13: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 13/48

13

V í d : Tuy n A và B s luânphiên nhau th c thi cho n khik t thúc. Ti p theo tuy n C sth c thi n khi k t thúc.

Ti p theo tuy n D, E và F sluân phiên th c thi n khi k tthúc. Ti p theo tuy n G th c thi

n khi k t thúc. Cu i cùngtuy n H và I luân phiên th c thi

n khi k t thúc.Nh n xét:Các tuy n có utiên th p s có nguy c b trìhoãn vô h n nh.

B l p l chB l p l ch

Page 14: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 14/48

14

Ví d v a tuy nVí d v a tuy n

T o ra 3 tuy n v i u tiên m c nh.Công vi c c a m i tuy n là ng trong m t th igian ng u nhiên t 0 n5 giây. Sau khi ngxong, các tuy n s thông báo ra màn hình.

Page 15: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 15/48

15

class PrintThread extends Thread {private int sleepTime;public PrintThread( String name ){

super ( name );sleepTime = (int )(Math.random()*5000);System.out.println( getName() +

" have sleep time: " + sleepTime);}

Ví d v a tuy n (tt)Ví d v a tuy n (tt)

Page 16: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 16/48

16

// method run is the code to be executed by new threadpublic void run(){

try {System.out.println(getName()+´ starts to sleep");

Thread.sleep( sleepTime );}// sleep() may throw an InterruptedExceptioncatch (InterruptedException e){

e.printStackTrace();}System.out.println( getName() + " done sleeping" );

}

}

Ví d v a tuy n (tt)Ví d v a tuy n (tt)

Page 17: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 17/48

17

public class ThreadTest{public static void main( String [ ] args ){

PrintThread thread1 = new PrintThread( "thread1" );PrintThread thread2 = new PrintThread( "thread2" );PrintThread thread3 = new PrintThread( "thread3" );System.out.println( "Starting threads" );thread1.start(); // start and ready to runthread2.start(); // start and ready to runthread3.start(); // start and ready to runSystem.out.println( "Threads started, main ends\n" );

}}

Ví d v a tuy n (tt)Ví d v a tuy n (tt)

Page 18: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 18/48

18

Ví d v a tuy n (tt)Ví d v a tuy n (tt)

Page 19: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 19/48

19

M t s ph ng th c c a ThreadM t s ph ng th c c a Thread

void sleep(long millis); // ngvoid yield(); // nh ng i u khi nvoid interrupt(); // ng t tuy nvoid join(); // yêu c u ch k t thúcvoid suspend(); // deprecated

void resume(); // deprecatedvoid stop(); // deprecated

Page 20: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 20/48

20

Vòng i c a tuy nVòng i c a tuy n

Page 21: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 21/48

21

ng b hóa tuy nng b hóa tuy n

V i c các tuy n trong ch ng trình cùng truy nh pvào m t i t ng có th s em l i k t qu khôngnh mong mu n. V í d : Tuy n A c p nh t i t ng

X và tuy n B c d li u t X. R t có th x y ra sc là tuy n B c d li u ch a c c p nh t.ng b hoá tuy n (thread synchronization) giúp

cho t i m i th i i m ch có m t tuy n có th truynh p vào i t ng còn các tuy n khác ph i i.V íd : Trong khi tuy n A c p nh t X thì tuy n B ch a

c c.

Page 22: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 22/48

22

ng b hóa tuy nng b hóa tuy n

Dùng t khoá synchronized trên các ph ngth c th c hi n ng b hoá.

i t ng khai báo ph ng th c synchronized

s có m t b giám sát (monitor). B giám sátm b o t i m i th i i m ch có m t tuy nc g i ph ng th c synchronized.

K hi m t tuy n g i ph ng th c synchronized,i t ng s b khoá.K hi tuy n ó th c hi n

xong ph ng th c, i t ng s c mkhoá.

Page 23: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 23/48

23

ng b hóa Threadng b hóa Thread

Trong khi th c thi ph ng th c synchronized,m t tuy n có th g i wait() chuy n sang tr ngthái ch cho n khi m t i u ki n nào ó x y

ra.K

hi tuy n ang ch , i t ng s không bkhoá.K hi th c hi n xong công vi c trên i t ng,m t tuy n c ng có th thông báo (notify) cho cáctuy n khác ang ch truy nh p i t ng.Deadlock: Tuy n A ch tuy n B và tuy n B c ngch tuy n A.

Page 24: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 24/48

24

Q uan h Producer Q uan h Producer- -Consumer Consumer

Gi s có 2 tuy n: Producer ghi d li u vào m tbuffer và Consumer c d li u t buffer => C n có s ng b hoá n u không d li u cóth b Producer ghi è tr c khi Consumer c

c ho c Consumer có th c m t d li unhi u l n khi Producer ch a s n xu t k p.

Page 25: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 25/48

25

Gi i pháp ng b hoá:} Tr c khi ti p t c sinh d li u và a vào buffer,

Producer ph i ch (wait) Consumer c xong d li ut buffer.

} K hi Consumer c xong d li u, nó s thông báo(notify) cho Producer bi t ti p t c sinh d li u.

} N u Consumer th y trong buffer không có d li uho c d li u ó ã c c r i, nó s ch (wait) chot i khi nh n c thông báo có d li u mi.

} K hi Producer s n xu t xong d li u, nó thông báo(notify) cho Consumer bi t.

Q uan h Producer Q uan h Producer- -Consumer Consumer

Page 26: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 26/48

26

Ví d v PVí d v P--C: Không ng bC: Không ng b

class Buffer{private int buffer = -1;public void set( int value ){

buffer = value;}public int get(){

return buffer;}}

Page 27: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 27/48

27

class Producer extends Thread{

private Buffer sharedBuffer;public Producer( Buffer shared ){

super ( "Producer" );sharedBuffer = shared;

}

Ví d v PVí d v P--C: Không ng bC: Không ng b

Page 28: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 28/48

28

public void run(){for ( int count = 1; count <= 5; count++ ){

try {Thread.sleep(( int)(Math.random() * 3000));

sharedBuffer.set( count );System.out.println( "Producer writes " + count);}catch (InterruptedException e){

e.printStackTrace();}

}System.out.println( getName() + " finished.");

}}

Ví d v PVí d v P--C: Không ng bC: Không ng b

Page 29: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 29/48

29

class Consumer extends Thread{

private Buffer sharedBuffer;public Consumer( Buffer shared ){

super ( "Consumer" );sharedBuffer = shared;

}

Ví d v PVí d v P--C: Không ng bC: Không ng b

Page 30: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 30/48

3 0

public void run(){for ( int count = 1; count <= 5; count++ ){

try {Thread.sleep(( int)(Math.random() *3000));

System.out.println( "Consumer reads " +sharedBuffer.get());}catch (InterruptedException e){

e.printStackTrace();}

}System.out.println( getName() + " finished.");

}}

Ví d v PVí d v P--C: Không ng bC: Không ng b

Page 31: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 31/48

3 1

public class SharedBufferTest1{public static void main( String [] args ){

// create shared object used by threadsBuffer sharedBuffer = new Buffer();// create producer and consumer objectsProducer producer= new Producer(sharedBuffer);Consumer consumer=new Consumer(sharedBuffer);

producer.start();//

start producer threadconsumer.start(); // start consumer thread}

}

Ví d v PVí d v P--C: Không ng bC: Không ng b

Page 32: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 32/48

3 2

K t qu khi không ng bK t qu khi không ng b

Page 33: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 33/48

33

Ví d v PVí d v P--C: Có ng bC: Có ng b

class Buffer{ // Thi t k l i l p Bufferprivate int buffer = -1;private boolean writable = true ;public synchronized void set( int value ){

while (!writable){try {

wait();}catch (InterruptedException e){

e.printStackTrace();}

}buffer = value;writable = false ;notify ();

}

Page 34: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 34/48

34

public synchronized int get(){while( writable ){

try {wait();

} catch (InterruptedException e){e.printStackTrace();

}}

writable = true ;notify ();return buffer;

}

}

Ví d v PVí d v P--C: Có ng bC: Có ng b

Page 35: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 35/48

Page 36: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 36/48

3 6

T o tuy n t giao ti p RunnableT o tuy n t giao ti p Runnable

M t l p có th tr thành m t tuy n khi cài tgiao ti p Runnable (giao ti p này ch có m tph ng th c run() duy nh t).V í d : T o applet có qu bóng ch y

Page 37: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 37/48

3 7

import java.awt.*;import java.applet.*;public class BallFlyingextendsApplet implements Runnable{

Thread animThread = null;int ballX= 0, ballY=50;int dx=1, dy=2;boolean stopRun = false ;public void start(){ // applet starts

if (animThread == null){animThread= new Thread( this );animThread.start();

}

}

T o tuy n t giao ti p RunnableT o tuy n t giao ti p Runnable

Page 38: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 38/48

3 8

public void stop(){ // applet stopsstopRun = true ;}publicvoid run(){

this.setBackground(Color.CYAN);while (! stopRun){

moveBall();delay(5);

}}private void delay(intmiliSeconds){

try { Thread.sleep(miliSeconds);}catch (Exception e){

System.out.println("Sleeperror !");}

}

T o tuy n t giao ti p RunnableT o tuy n t giao ti p Runnable

Page 39: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 39/48

3 9

private void moveBall(){ballX += dx;ballY += dy;if (ballY> getSize().height -30) dy =- dy;

if (ballX> getSize().width -30) dx =- dx;if (ballY< 0) dy =- dy;if (ballX< 0) dx =- dx;repaint();

}publicvoid paint(Graphicsg){

g.fillOval(ballX,ballY, 30, 30);}

}

T o tuy n t giao ti p RunnableT o tuy n t giao ti p Runnable

Page 40: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 40/48

4 0

Tuy n ma th ng là tuy n h tr môi tr ng th cthi c a các tuy n khác.V í d : garbage collector c aJava là m t tuy n ma.

Ch ng trình k t thúc khi t t c các tuy n khôngph i tuy n ma k t thúc.Các ph ng th c v i tuy n ma:

} void setDaemon(boolean isDaemon); // t tuy ntr thành tuy n ma

} boolean isDaemon(); // ki m tra tuy n có ph ituy n ma không

Tuy n ma (daemon thread)Tuy n ma (daemon thread)

Page 41: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 41/48

4 1

Các tuy n có th c a vào trong cùng m tnhóm thông qua l p ThreadGroup. V í d : nhómtuy n tìm ki m d li u trên các t p d li u khác

nhau.M t nhóm tuy n ch có th x lý trên các tuy ntrong nhóm, ví d : ng t t t c các tuy n.Có th t o ra các nhóm tuy n là nhóm con c am t nhóm tuy n khác.Nhóm tuy n c bi t: system, main

Nhóm tuy n (thread group)Nhóm tuy n (thread group)

Page 42: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 42/48

4 2

H ai l p liên quan t i x lý công vi c theo th igian:

} javax.swing.Timer } java.util.Timer

L p java.swing.Timer } n gi n, d dùng trên GUI

L p java.util.Timer } Nhi u tính n ng h n java.swing.Timer

L p Timer L p Timer

Page 43: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 43/48

43

import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class CountDownextends Applet implements

ActionListener{private TextField timeField;private Button startButton;private Button stopButton;

private javax.swing.Timer timer;private int count;public void init(){

timeField = new TextField(6);

Ví d : m ng cVí d : m ng c

Page 44: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 44/48

44

timeField.setFont (new Font("sansserif", Font.PLAIN, 18));startButton = new Button("Start");stopButton = new Button("Stop");add(timeField);add(startButton);add(stopButton);startButton.addActionListener( this );stopButton.addActionListener( this );timer = new javax.swing.Timer(10, this );count = 0;

} // end init()

Ví d : m ng cVí d : m ng c

Page 45: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 45/48

4 5

public void actionPerformed(ActionEvent e){if (e.getSource() == startButton)timer.start();

else if (e.getSource() == stopButton)timer.stop();

else {count++;int hsecond = count%100;int totalSecond = (count / 100);int h = totalSecond / 3600;int secondLeft = totalSecond%3600;

int m = secondLeft / 60;int s = secondLeft%60;timeField.setText("´ + h + ":" + m + ":" + s + ":" + hsecond);

}}

}

Ví d : m ng cVí d : m ng c

Page 46: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 46/48

4 6

1. S d ng k thu t khung hình ph c i ti nch ng trình v bóng.

2. M r ng ch ng trình v bóng cho phép haiqu bóng cùng ch y trên màn hình v i t c khác nhau (Xem l i bài v Graphics).

3 . M r ng ch ng trình v bóng cho phép

trong khi bóng ch y, n u ng i dùng clickchu t vào m t v trí nào ó trên màn hình thìbóng s c chuy n ra v trí ó.

Bài t pBài t p

Page 47: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 47/48

4 7

4 . V i t ch ng trình t o 2 tuy n: m t tuy n tìmki m các s nguyên t t 1000 n 1000000và m t tuy n tính t ng giá tr c a các s

nguyên t tìm c. Chú ý ng b tuy n.5 . V i t ch ng trình t o m ng có 1000000 ph n

t , sau ó t o 2 tuy n s p x p 2 n a m ng,

cu i cùng ghép 2 m ng ã s p x p. So sánhcách làm trên v i cách s p x p tr c ti p toànb m ng.

Bài t pBài t p

Page 48: Chuong111.LaptrinhMultiThreading-New

8/7/2019 Chuong111.LaptrinhMultiThreading-New

http://slidepdf.com/reader/full/chuong111laptrinhmultithreading-new 48/48

4 8