You are on page 1of 3

18/07/2012

Tm hiu Thread trong JAVA-Phn 2 Mobilesprogramming's Blog

Mobilesprogramming's Blog
JAVA | SYMBIAN | ANDROID

Tm hiu Thread trong JAVA-Phn 2


Bi 2: To Thread V Vng i Thread nh ngha v start mt thread: Mt ng dng to mt instance ca Thread phi cung cp code s chy trong thread . C 2 cch lm iu ny: Cung cp mt i tng Runnable: Giao din Runnable nh ngha mt phng thc n, phng thc run(). Khi bn implement giao din Runnable, bn phi ci t code trong phng thc run(). i tng Runnable c gn cho Contructor ca Thread, v d HelloRunnable: 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(); } } To mt class extend t Thread: Bn thn lp thread implement giao din Runnable, phng thc run() ca n khng lm g c. Mt ng dng to ra 1 lp extend t thread, phi cung cp phn thc thi ca phng thc run(), v d: public class HelloThread extends Thread { public void run() { System.out.println(Hello from a thread!);
mobilesprogramming.wordpress.com/2010/01/19/tim-hiu-thread-trong-java-phn-2/ 1/3

18/07/2012

Tm hiu Thread trong JAVA-Phn 2 Mobilesprogramming's Blog

} public static void main(String args[]) { (new HelloThread()).start(); } } Ch c 2 v d u gi Thread.start() bt u thread mi. Vy bn nn s dng 2 trng hp trn trong iu kin no. trng hp u tin, s dng i tng Runnable, lp implement giao din ny c th k tha t mt lp khc. trng hp th hai, lp extend t thread th khng th k tha thm lp no ngoi thread, bi Java ch cho php n tha k. Lp thread nh ngha mt s phng thc hu ch cho vic qun l Thread. Chng bao gm cc phng thc tnh cung cp thng tin hay tc ng n trng thi ca thread gi cc phng thc ny. Cc phng thc khc c gi t cc thread khc lin quan n vic qun l thread v i tng Thread. Trng thi ca Thread Mt Thread bao gm 4 trng thi sau: New Runnable Blocked Dead Trng thi New: Khi to mt Thread vi ton t new, th Thread vn cha c chy. iu ny c ngha l n trong trng thi New. Khi mt Thread trong trng thi New, Thread vn cha bt u thc thi code bn trong n. Trng thi Runnable: Khi gi phng thc start(), th Thread ri vo trng thi Runnable. Khi trong trng thi ny, mt Thread hoc c th ang chy hoc khng, nhng khng c iu g c th ngn cn n thc thi nu sheduler c th sp xp n. N ph thuc vo h iu hnh gn thi gian thc thi cho n. V n khng phi l dead hay blocked. Trng thi Blocked: Thread ri vo trng thi Blocked nu mt trong cc action sau y xy ra: Gi phng thc sleep().
mobilesprogramming.wordpress.com/2010/01/19/tim-hiu-thread-trong-java-phn-2/ 2/3

18/07/2012

Tm hiu Thread trong JAVA-Phn 2 Mobilesprogramming's Blog

Thread gi mt operation m n ang b blocking trn Input/Output. Thread c gng ginh ly kha(lock) trong khi kha ny ang c nm gi bi mt Thread khc. Thread ang i mt iu kin no thc thi. Mt ai gi phng thc suppend() ca Thread. Tuy nhin, phng thc ny b phn i v khng nn gi n trong code. Tm li, khi mt Thread trong trng thi blocked, scheduler s b qua n v khng cho n thi gian CPU x l, v n khng th thc thi bt k hot ng no. Trng thi Dead: Mt Thread ri vo trng thi Dead vi mt trong 2 l do sau: Thc thi xong phng thc run(). Mt ngoi l cha c bt(uncaught) c pht sinh v kt thc phng thc run(). Ngoi ra, c mt cch khc c th kill mt Thread bng cch gi phng thc stop(). Tuy nhin, phng thc ny b ngn cm v khng nn s dng phng thc ny trong code. Quyn u tin(Priority) Mi Thread trong Java u c mt quyn u tin(priority) gip cho h iu hnh xc nh c th t thc hin ca cc Thread c thc thi. Gii hn ca n: MIN_PRIORITY(c gi tr 1) v MAX_PRIORITY(c gi tr 10). Thng thng, Thread c quyn u tin cao hn s c u tin x l. Theo mc nh, mi mt Thread c cho mt quyn u tin NORM_PRIORITY(c gi tr 5). Hu ht Java Platforms u h tr bng biu lm vic(timeslicing). Nu khng c timeslicing, th mi Thread trong tp hp cc Thread c quyn u tin ngang nhau u thc thi (tr khi n t trng thi runnable ri vo trng thi waiting hay timed waiting, hay b ngt bi Thread c quyn thc thi cao hn) trc khi cc Thread khc c quyn u tin ngang nhau nhn c c hi thc thi. Vi Timeslicing, thm ch nu Thread cha thc thi xong khi thi gian thc thi vt qu gii hn cho php, th processor s y Thread ra v a mt Thread tip theo(c u tin bng Thread trc ) vo thc thi. Lu :Nhng constants(MAX_PRIORITY, MIN_PRIORITY) c khai bo trong lp Thread. V ta khng to v s dng cc i tng Thread thc thi ng thi m phi thc thi giao din Runnable. Cc bi lin quan: Tm hiu Thread trong JAVA-Phn 1 01/19/2010 mobilesprogramming Categories: Thread Tags: java thread Blog at WordPress.com. | Theme: Dark Wood by Nischal Maniar.

mobilesprogramming.wordpress.com/2010/01/19/tim-hiu-thread-trong-java-phn-2/

3/3

You might also like