資源描述:
《Java多線程編程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、Java多線程編程如何實現(xiàn)多線程?實現(xiàn)多線程的兩種方法:1,繼承Thread類2,實現(xiàn)Runnable接口例:繼承Thread類:MultiThread.java:publicclassMultiThread{publicstaticvoidmain(String[]args){MyThreadmt=newMyThread();mt.start();System.out.println(Thread.currentThread().getName());}}classMyThreadextendsThread{publicvoidrun(){System.out.println(MyTh
2、read.currentThread().getName());}}2:實現(xiàn)Runnable接口:Runnable1.javapublicclassRunnable1{publicstaticvoidmain(String[]args){MyThread1mt=newMyThread1();newThread(mt).start();System.out.println(Thread.currentThread().getName());}}classMyThread1implementsRunnable{publicvoidrun(){System.out.println(Thread
3、.currentThread().getName());}}線程的常用方法有哪些?1,setDaemon(Booleanon):設(shè)置后臺線程2,yield():在線運行的線程放棄運行權(quán)力。3,Sleep(longmillis):線程睡眠,單位毫秒4,同步(synchronized):同步方法和同步塊,適用于并行線程共享臨界資源5,setPriority:設(shè)置線程的優(yōu)先級,大小從1到10,默認優(yōu)先級NORM_PRIORITY(5),最大:MAX_PRIORITY(10),最?。篗IN_PRIORITY(1)6,wait:每個對象除了有一個鎖之外,還有一個等待隊列(wait),當一個對象剛創(chuàng)
4、建的時候,它的等待隊列是空的。7,我們應(yīng)該在當前線程鎖住對象的鎖之后,去調(diào)用該對象的wait方法。8,notify:當調(diào)用對象的notify方法時,將從該對象的等待隊列中刪除一個任意選擇的線程,這個線程將再次成為可運行的線程。9,當調(diào)用對象的notifyAll方法時,將從該對象的等待隊列中刪除所有等待的線程,這些線程將成為可運行的線程。Wait和notify主要用于生產(chǎn)者和消費者關(guān)系中。例:classTest{publicstaticvoidmain(String[]args){Queueq=newQueue();Producerp=newProducer(q);Consumerc=ne
5、wConsumer(q);p.start();c.start();}}classProducerextendsThread{Queueq;Producer(Queueq){this.q=q;}publicvoidrun(){for(inti=0;i<10;i++){q.put(i);System.out.println("Producerput"+i);}}}classConsumerextendsThread{Queueq;Consumer(Queueq){this.q=q;}publicvoidrun(){while(true){System.out.println("Consume
6、rget"+q.get());}}}classQueue{intvalue;booleanbFull=false;publicsynchronizedvoidput(inti){if(!bFull){value=i;bFull=true;notify();}try{wait();}catch(Exceptione){e.printStackTrace();}}publicsynchronizedintget(){if(!bFull){try{wait();}catch(Exceptione){e.printStackTrace();}}bFull=false;notify();retur
7、nvalue;}}