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

正文內(nèi)容

sun_java_培訓(xùn)專用教材c-資料下載頁

2025-08-21 13:07本頁面
  

【正文】 21.// Add it to the center of the frame (app, )。 (250, 150)。 24. 25.// Register the AppletApp class as the 26.// listener for a Window Destroy event (new WindowAdapter() { void windowClosing (WindowEvent e) { (0)。 30.} 31.} )。 32. 33.// Call the applet methods ()。 ()。 (true)。 // Invokes paint() 4.} 5. void init() { = new Date()。 8.} 9. void paint (Graphics g) { (This Java program started at, 25, 25)。 ((), 25, 60)。 13.} 14.}注-應(yīng)用程序沒有瀏覽器所提供的資源,因此不能使用getImage()或getAudioClip()。練習(xí):創(chuàng)建Applet 練習(xí)目標(biāo) - 在本實(shí)驗(yàn)中,你將熟悉Applet編程,尤其是用于屏幕更新和刷新的paint()方法。一、準(zhǔn)備為了成功地完成本實(shí)驗(yàn),你必須能夠用瀏覽器來顯示一個(gè)Applet。二、任務(wù)水平1:編寫一個(gè)Applet1. 打開一個(gè)新的外殼程序或Command Tool窗口。2. 用一個(gè)文本編輯器。3. 修改這個(gè)程序,使得你在Applet中點(diǎn)擊時(shí),它可以循環(huán)顯示三種不同的消息。4. c:\student 5. 用一個(gè)文本編輯器,applet標(biāo)記。6. 用appletviewer命令測(cè)試你的Applet。 c:\student 水平2:創(chuàng)建同心的正方形1. 創(chuàng)建一個(gè)Applet,它產(chǎn)生一系列如下圖的同心正方形(或圓形):2. 試圖使每個(gè)正方形(或圓形)為一種不同的顏色。,則可用setColor方法對(duì)Java applet加入色彩。import 。. . .public void paint(Graphics g) {()。(5, 5, 50, 50)。. . .}水平3:創(chuàng)建一個(gè)滾動(dòng)的Java applet1. 編寫一個(gè)Applet,顯示一幅圖像,并在鼠標(biāo)經(jīng)過該圖像時(shí)播放一個(gè)聲音。三、練習(xí)小結(jié)討論 - 花幾分鐘時(shí)間討論一下,在本實(shí)驗(yàn)練習(xí)過程中你都經(jīng)歷、提出和發(fā)現(xiàn)了什么。l 經(jīng)驗(yàn)l 解釋l 總結(jié)l 應(yīng)用四、檢查你的進(jìn)度在進(jìn)入下一個(gè)模塊的學(xué)習(xí)之前,請(qǐng)確認(rèn)你能夠:l 區(qū)分獨(dú)立應(yīng)用程序和Appletl 編寫一個(gè)HTML標(biāo)記來調(diào)用Java Appletl 描述Applet和AWT的類層次樹l Appletl 列出Applet的主要方法l 描述和使用AWT的繪圖模型l 使用Applet方法從URL讀取圖像和文件l 使用param標(biāo)記配置Applet五、思考題如何把Applet應(yīng)用在你公司的Web頁面上,以改進(jìn)它的整體表現(xiàn)效果?第12章 線 程本模塊討論多線程,它允許一個(gè)程序同時(shí)執(zhí)行多個(gè)任務(wù)。第一節(jié) 相關(guān)問題討論 - 以下為與本模塊內(nèi)容有關(guān)的問題:l 我如何使我的程序執(zhí)行多個(gè)任務(wù)?第二節(jié) 目 標(biāo)在完成了本模塊的學(xué)習(xí)后,你應(yīng)當(dāng)能夠:l 定義一個(gè)線程l 在一個(gè)Java程序中創(chuàng)建若干分離的線程,控制線程使用的代碼和數(shù)據(jù)l 控制線程的執(zhí)行,并用線程編寫?yīng)毩⒂谄脚_(tái)的代碼l 描述在多個(gè)線程共享數(shù)據(jù)時(shí)可能會(huì)碰到的困難l 使用synchronized關(guān)鍵字保護(hù)數(shù)據(jù)不受破壞l 使用wait()和notify()使線程間相互通信l ()、resume()和stop()方法?第三節(jié) 線 程線 程l 什么是線程?l 虛擬處理機(jī) 什么是線程?一個(gè)關(guān)于計(jì)算機(jī)的簡化的視圖是:它有一個(gè)執(zhí)行計(jì)算的處理機(jī)、包含處理機(jī)所執(zhí)行的程序的ROM(只讀存儲(chǔ)器)、包含程序所要操作的數(shù)據(jù)的RAM(只讀存儲(chǔ)器)。在這個(gè)簡化視圖中,只能執(zhí)行一個(gè)作業(yè)。一個(gè)關(guān)于最現(xiàn)代計(jì)算機(jī)比較完整的視圖允許計(jì)算機(jī)在同時(shí)執(zhí)行一個(gè)以上的作業(yè)。你不需關(guān)心這一點(diǎn)是如何實(shí)現(xiàn)的,只需從編程的角度考慮就可以了。如果你要執(zhí)行一個(gè)以上的作業(yè),這類似有一臺(tái)以上的計(jì)算機(jī)。在這個(gè)模型中,線程或執(zhí)行上下文,被認(rèn)為是帶有自己的程序代碼和數(shù)據(jù)的虛擬處理機(jī)的封裝。注-在這個(gè)模塊中,使用“Thread”“thread”時(shí)是指執(zhí)行上下文。 線程的三個(gè)部分線程的三個(gè)部分l 處理機(jī)l 代碼l 數(shù)據(jù)進(jìn)程是正在執(zhí)行的程序。一個(gè)或更多的線程構(gòu)成了一個(gè)進(jìn)程。一個(gè)線程或執(zhí)行上下文由三個(gè)主要部分組成l 一個(gè)虛擬處理機(jī)l CPU執(zhí)行的代碼l 代碼操作的數(shù)據(jù)代碼可以或不可以由多個(gè)線程共享,這和數(shù)據(jù)是獨(dú)立的。兩個(gè)線程如果執(zhí)行同一個(gè)類的實(shí)例代碼,則它們可以共享相同的代碼。類似地,數(shù)據(jù)可以或不可以由多個(gè)線程共享,這和代碼是獨(dú)立的。兩個(gè)線程如果共享對(duì)一個(gè)公共對(duì)象的存取,則它們可以共享相同的數(shù)據(jù)。在Java編程中,虛擬處理機(jī)封裝在Thread類的一個(gè)實(shí)例里。構(gòu)造線程時(shí),定義其上下文的代碼和數(shù)據(jù)是由傳遞給它的構(gòu)造函數(shù)的對(duì)象指定的。第四節(jié) Java編程中的線程 創(chuàng)建線程創(chuàng)建線程l 多線程編程l 從同一個(gè)Runnbale實(shí)例派生的多線程l 線程共享數(shù)據(jù)和代碼。本節(jié)介紹了如何創(chuàng)建線程,以及如何使用構(gòu)造函數(shù)參數(shù)來為一個(gè)線程提供運(yùn)行時(shí)的數(shù)據(jù)和代碼。一個(gè)Thread類構(gòu)造函數(shù)帶有一個(gè)參數(shù),它是Runnable的一個(gè)實(shí)例。一個(gè)Runnable是由一個(gè)實(shí)現(xiàn)了Runnable接口(即,提供了一個(gè)public void run()方法)的類產(chǎn)生的。例如: class ThreadTest { static void main(String args[]) { r = new Xyz()。 t = new Thread(r)。 //Thread t = new Thread(new Xyz())。 5.} 6.} 7. Xyz implements Runnable { i。 10. void run() { (true) { (Hello + i++)。 (i == 50) break。 15.} 16.} 17.} 首先,main()方法構(gòu)造了Xyz類的一個(gè)實(shí)例r。實(shí)例r有它自己的數(shù)據(jù),在這里就是整數(shù)i。因?yàn)閷?shí)例r是傳給Thread的類構(gòu)造函數(shù)的,所以r的整數(shù)i就是線程運(yùn)行時(shí)刻所操作的數(shù)據(jù)。線程總是從它所裝載的Runnable實(shí)例(在本例中,這個(gè)實(shí)例就是r。)的run()方法開始運(yùn)行。一個(gè)多線程編程環(huán)境允許創(chuàng)建基于同一個(gè)Runnable實(shí)例的多個(gè)線程。這可以通過以下方法來做到:Thread t1= new Thread(r)。Thread t2= new Thread(r)。此時(shí),這兩個(gè)線程共享數(shù)據(jù)和代碼??傊?,線程通過Thread對(duì)象的一個(gè)實(shí)例引用。線程從裝入的Runnble實(shí)例的run()方法開始執(zhí)行。線程操作的數(shù)據(jù)從傳遞給Thread構(gòu)造函數(shù)的Runnable的特定實(shí)例處獲得。 啟動(dòng)線程啟動(dòng)線程l 使用start()方法l 使線程置于可運(yùn)行狀態(tài)一個(gè)新創(chuàng)建的線程并不自動(dòng)開始運(yùn)行。你必須調(diào)用它的start()方法。例如,你可以發(fā)現(xiàn)上例中第4行代碼中的命令:()。調(diào)用start()方法使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。 線程調(diào)度一個(gè)Thread對(duì)象在它的生命周期中會(huì)處于各種不同的狀態(tài)。下圖形象地說明了這點(diǎn):盡管線程變?yōu)榭蛇\(yùn)行的,但它并不立即開始運(yùn)行。在一個(gè)只帶有一個(gè) 處理機(jī)的機(jī)器上,在一個(gè)時(shí)刻只能進(jìn)行一個(gè)動(dòng)作。下節(jié)描述了如果有一個(gè)以上可運(yùn)行線程時(shí),如何分配處理機(jī)。在Java中,線程是搶占式的,但并不一定是分時(shí)的 (一個(gè)常見的錯(cuò)誤是認(rèn)為“搶占式”只不過是“分時(shí)”的一種新奇的稱呼而已) 。搶占式調(diào)度模型是指可能有多個(gè)線程是可運(yùn)行的,但只有一個(gè)線程在實(shí)際運(yùn)行。這個(gè)線程會(huì)一直運(yùn)行,直至它不再是可運(yùn)行的,或者另一個(gè)具有更高優(yōu)先級(jí)的線程成為可運(yùn)行的。對(duì)于后面一種情形,低優(yōu)先級(jí)線程被高優(yōu)先級(jí)線程搶占了運(yùn)行的機(jī)會(huì)。一個(gè)線程可能因?yàn)楦鞣N原因而不再是可運(yùn)行的。()調(diào)用,要求這個(gè)線程暫停一段固定的時(shí)間。這個(gè)線程可能在等待訪問某個(gè)資源,而且在這個(gè)資源可訪問之前,這個(gè)線程無法繼續(xù)運(yùn)行。所有可運(yùn)行線程根據(jù)優(yōu)先級(jí)保存在池中。當(dāng)一個(gè)被阻塞的線程變成可運(yùn)行時(shí),它會(huì)被放回相應(yīng)的可運(yùn)行池。優(yōu)先級(jí)最高的非空池中的線程會(huì)得到處理機(jī)時(shí)間(被運(yùn)行)。因?yàn)镴ava線程不一定是分時(shí)的,所有你必須確保你的代碼中的線程會(huì)不時(shí)地給另外一個(gè)線程運(yùn)行的機(jī)會(huì)。這可以通過在各種時(shí)間間隔中發(fā)出sleep()調(diào)用來做到。 class Xyz implements Runnable { void run() { (true) { 4.// do lots of interesting stuff 5.: 6.// Give other threads a chance { (10)。 9.} catch (InterruptedException e) { 10.// This thread39。s sleep was interrupted 11.// by another thread 12.} 13.} 14.} 15.} 注意try和catch塊的使用。()和其它使線程暫停一段時(shí)間的方法是可中斷的。線程可以調(diào)用另外一個(gè)線程的interrupt()方法,這將向暫停的線程發(fā)出一個(gè)InterruptedException。注意Thread類的sleep()方法對(duì)當(dāng)前線程操作,(x),它是一個(gè)靜態(tài)方法。sleep()的參數(shù)指定以毫秒為單位的線程最小休眠時(shí)間。除非線程因?yàn)橹袛喽嵩缁謴?fù)執(zhí)行,否則它不會(huì)在這段時(shí)間之前恢復(fù)執(zhí)行。Thread類的另一個(gè)方法yield(),可以用來使具有相同優(yōu)先級(jí)的線程獲得執(zhí)行的機(jī)會(huì)。如果具有相同優(yōu)先級(jí)的其它線程是可運(yùn)行的,yield()將把調(diào)用線程放到可運(yùn)行池中并使另一個(gè)線程運(yùn)行。如果沒有相同優(yōu)先級(jí)的可運(yùn)行進(jìn)程,yield()什么都不做。注意sleep()調(diào)用會(huì)給較低優(yōu)先級(jí)線程一個(gè)運(yùn)行的機(jī)會(huì)。yield()方法只會(huì)給相同優(yōu)先級(jí)線程一個(gè)執(zhí)行的機(jī)會(huì)。第五節(jié) 線程的基本控制 終止一個(gè)線程當(dāng)一個(gè)線程結(jié)束運(yùn)行并終止時(shí),它就不能再運(yùn)行了??梢杂靡粋€(gè)指示run()方法必須退出的標(biāo)志來停止一個(gè)線程。 class Xyz implements Runnable { boolean timeToQuit=false。 3. void run() { (! timeToQuit) { 6.... 7.} 8.// clean up before run() ends 9.} 10. void stopRunning() { =true。 13.} 14.} 15. class ControlThread { Runnable r = new Xyz()。 Thread t = new Thread(r)。 19. void startThread() { ()。 22.} 23. void stopThread() { 25.// use specific instance of Xyz ()。 27.} 28.}在一段特定的代碼中,可以使用靜態(tài)Thread方法currentThread()來獲取對(duì)當(dāng)前線程的引用,例如: class Xyz implements Runnable { void run() { (true) { 4.// lots of interesting stuff 5.// Print name of the current thread (Thread + ().getName()+ 8.pleted)。 9.} 10.} 11.} 測(cè)試一個(gè)線程l 測(cè)試一個(gè)線程l isAlive()l sleep()l join()有時(shí)線程可處于一個(gè)未知的狀態(tài)。isAlive()方法用來確定一個(gè)線程是否仍是活的?;钪木€程并不意味著線程正在運(yùn)行;對(duì)于一個(gè)已開始運(yùn)行但還沒有完成任務(wù)的線程,這個(gè)方法返回true。 延遲
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1