freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java基礎(chǔ)及應(yīng)用教程(下)ppt-資料下載頁

2025-03-22 07:09本頁面
  

【正文】 用程序同時運行多個線程。 ? 每個 Java程序都有一個默認(rèn)的線程,就是由main方法開始的線程,稱為主線程。通過Thread類可以創(chuàng)建更多的線程。 ? 可以采用不同方法創(chuàng)建線程,程序 Runnable接口的方式。 程序 import .*。import .*。 class smp111 extends Frame implements Runnable { 1 Thread trd=new Thread(this)。int x=5。 2 smp111(){ setBounds(100,100,300,180)。setVisible(true)。 setBackground()。 setForeground()。 setFont(new Font(隸書 ,36))。 3 ()。 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ (0)。}})。} 程序 4 public void run(){ 5 while(true){ 6 x=x+2。 7 if(x200)x=5。 8 repaint()。 9 try{(100)。} catch(InterruptedException e){}}} 10 public void paint(Graphics g){ 11 (歡迎光臨 ,x,80)。} 12 public static void main(String args[]){ smp111 frm=new smp111()。} } 程序 ? 類 smp111定義了四個方法。即分別由語句 12開始的顯式構(gòu)造方法、 run方法、 paint方法和 main方法。 ? 在 smp111類實現(xiàn)接口 Runnable便可以通過語句 1創(chuàng)建一個Thread類的對象 trd。 ? 語句 3執(zhí)行 Thread類的 start方法,便啟動線程。電腦有一個排隊序列,當(dāng)某線程被啟動后,就進入了序列排隊,有了處理資源便執(zhí)行該線程,自動調(diào)用語句 4開始的 run方法。 ? 語句 5是一個無限循環(huán),只有當(dāng)程序終止時,才能逼使它停下來。語句 6使 x的值不斷增加。 ? 執(zhí)行語句 8的 repaint方法時將調(diào)用語句 10的 paint方法,執(zhí)行語句 11,顯示字符串“歡迎光臨”。由于 x的值不斷增加時,字符串便不斷向右移動,造成動畫效果。當(dāng) x的值增加到 200時,語句 7將它置成初始值 5,字符串便回到左端,重新開始向右移動。 程序 ? 語句 9調(diào)用 sleep方法讓線程有一個 100毫秒的休眠期,在這期間線程暫停工作,通過這個時間可控制字符串移動的速度。在 sleep 的時間到了之后,線程不一定立即工作,要看其它線程是否正在運行。 ? sleep方法可能拋出錯誤,所以需要放在 try…catch 結(jié)構(gòu)中。 運行多個線程 ? 程序 ,可以看到兩個線程交替執(zhí)行的情形。 ? 語句 1聲明三個 static變量 frm、 bt bt2。 ? 語句 2聲明兩個 Thread類的對象 td1和 td2。 ? 語句 4創(chuàng)建兩個按鈕對象 bt bt2。 ? 語句 6創(chuàng)建兩個 Thread對象 td td2,并通過start方法啟動線程。排隊等候系統(tǒng)調(diào)用語句 7的 run方法。 程序 import .*。import .*。 class smp112 extends Frame implements Runnable{ 1 static smp112 frm。static Button bt1,bt2。 2 Thread td1,td2。 smp112(){ setVisible(true)。setBackground()。 setLayout(null)。setBounds(100,100,260,130)。 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ (0)。}})。 程序 3 bt1=new Button(線程 1)。 (30,60,90,30)。 ()。add(bt1)。 4 bt2=new Button(線程 2)。 (140,60,90,30)。 ()。add(bt2)。 5 td1=new Thread(this)。()。 6 td2=new Thread(this)。()。} public static void main(String args[]){ frm=new smp112()。}} 程序 7 public void run(){ while(true){ 8 if(()==td1){ 9 (false)。 10 (true)。 11 try{(2022)。} catch(InterruptedException e){}} 12 else if(()==td2){ (true)。 (false)。 try{(3000)。} catch(InterruptedException e){}}}} 程序 ? 語句 8調(diào)用 Thread類的currentThread方法判斷現(xiàn)在運行的是不是線程 td1,如果是,便通過語句 10顯示 bt隱藏 bt2。語句 11讓線程 td1暫停 2秒鐘。 ? 語句 12判斷現(xiàn)在運行的是不是線程 td2,如果是便顯示 bt隱藏 bt1,讓線程td2暫停 3秒鐘。 ? 運行時輪流顯示兩個按鈕,好像按鈕在左右跳動,由于線程 2的停頓時間長,兩個按鈕顯示的時間不同。 創(chuàng)建 Thread的子類 ? 不通過 Runnable接口也可以創(chuàng)建線程,程序 Thread的子類創(chuàng)建線程。 ? Thread是 Object的直接子類、在 引入可以使用。 ? 程序中定義了三個類,分別為語句 11開始的smp11 tda、 tdb類。 ? 語句 3創(chuàng)建 Graphics類的對象 pn,語句 9通過 pn訪問 drawString方法。 ? 語句 5通過 tda和 tdb類創(chuàng)建對象 td td2,并通過 start方法將它們啟動。 ? 由于 tda和 tdb都是 Thread的子類,所以 td td2是Thread類的對象。 程序 import .*。import .*。 1 class smp113 extends Frame{ 2 static Graphics pn。 smp113(){ setBounds(100,100,200,200)。setVisible(true)。 setBackground()。 setForeground()。 setFont(new Font(Arial,16))。 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ (0)。}})。 3 pn=getGraphics()。 4 tda td1=new tda()。()。 5 tdb td2=new tdb()。()。} 程序 public static void main(String args[]){ smp113 frm=new smp113()。}} 6 class tda extends Thread{ 7 public void run(){ 8 for(int i=0。i=5。i++){ 9 (A+i,20,50+i*24)。 10 try{sleep(2022)。} catch(InterruptedException e){}}}} 11 class tdb extends Thread{ 12 public void run(){ for(int i=0。i=5。i++){ 13 (B+i,100,50+i*24)。 14 try{sleep(3000)。} catch(InterruptedException e){}}}} 程序 ? 執(zhí)行語句 7的 run方法后語句 8控制 6次循環(huán)。語句 9顯示“ A‖+i,其中 i表示線程 tda的循環(huán)次數(shù),如右圖所示。 ? 執(zhí)行語句 10時線程 tda暫停 2秒。 ? 執(zhí)行語句 12的 run方法后,語句 13顯示“ B‖+i, i表示線程 tdb的循環(huán)次數(shù)。 ? 執(zhí)行語句 14時線程 tdb暫停 3秒。 ? 由于 tda的停頓時間短, tdb的停頓時間長,所以當(dāng) tda運行完 6次, tdb只運行 4次,如右圖所示。 圖片顯示 ? 用 Applet程序顯示圖片十分方便,程序 例子。 import .*。import .*。 public class smp114 extends Applet { Image img。 public void start(){ setBackground()。 1 img=getImage(getCodeBase(),)。} 2 public void paint (Graphics g){ 3 int wt=(this)。 4 int ht=(this)。 5 (img,30,35,wt/2,ht/2,this)。}} 程序 ? 語句 1調(diào)用 Applet類的 getImage方法返回一個 Image類型的對象 img。該方法的第一個參量是 Applet類的 getCodeBase方法,通過它返回當(dāng)前文件夾的地址。第二個參量,應(yīng)將該文件存放在當(dāng)前文件夾中。 ? 程序運行后便自動訪問語句 2的 paint方法。 ? 語句 4通過 Image類的 getWidth、 getHeight方法測定圖片的寬度和高度。 ? 語句 5調(diào)用 Graphics 類的 drawImage方法顯示圖片 img。本程序采用 6個參量的 drawImage方法。第一個參量 img就是語句 1創(chuàng)建的 Img對象,后面的兩個參量 30和 35表示圖像的左上角坐標(biāo)。參量 wt/2和 ht/2分別為測得的圖片的半寬度和半高度。參量 this表示在本類 smp114的對象裝載圖片。 程序 ? 圖片 。 在 Frame窗口顯示圖片 ? 程序 Frame窗口顯示圖片,要比在Applet窗口顯示麻煩一些。 ? 語句 1聲明一個 static的 smp115類型對象 frm,以備在其他方法訪問。 ? Frame類沒有 getImage方法,但是可以通過 Toolkit類的getImage方法加載圖片。 ? 語句 2通過 Toolkit類的 getToolkit方法返回一個 Toolkit類型的變量 tl。 Toolkit類在 awt包中,程序開頭已引入該包。 ? 語句 3通過 tl訪問 getImage方法返回 Image類型變量 img。 ? 當(dāng)系統(tǒng)自動訪問語句 4的 paint方法時,執(zhí)行語句 6便可顯示圖片 。 ? 這里將語句 6中的參量 this換成 frm,結(jié)果相同,清楚地說明了 this代表什么。 程序 import .*。import .*。 class smp115 extends Frame{ 1 static smp115 frm。Image img。 smp115(){ setSize(370,305)。setVisible(true)。 setBackground()。 2 Toolkit tl=getToolkit()。 3 img=()。 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ (0)。}})。} 4 public void paint (Graphics g){ 5 int wt=(frm)。int ht=(frm)。 6 (img,25,45,wt/2,ht/2,frm)。} public static void main(String args[]){frm=new smp115()。}} 程序 ? 圖片 。 制作圖片冊 ? 程序 。整個程序由 smp116和 cv兩個類構(gòu)成。
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1