[問(wèn)答題] 下面程序是一個(gè)計(jì)時(shí)器,從1000秒開(kāi)始倒計(jì)時(shí),直到為0結(jié)束。在界面上有兩個(gè)按鈕,一個(gè)可以暫停計(jì)時(shí),另一個(gè)可以繼續(xù)已經(jīng)暫停的計(jì)時(shí)。請(qǐng)更正題中帶下劃線的
[問(wèn)答題] 下面程序是一個(gè)計(jì)時(shí)器,從1000秒開(kāi)始倒計(jì)時(shí),直到為0結(jié)束。在界面上有兩個(gè)按鈕,一個(gè)可以暫停計(jì)時(shí),另一個(gè)可以繼續(xù)已經(jīng)暫停的計(jì)時(shí)。請(qǐng)更正題中帶下劃線的部分。
注意:不改動(dòng)程序的結(jié)構(gòu),不得增行或刪行
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Example3_4 extends Applet
public Color color = Color.red;
private int num= 1000;
public Counter theCounter;
private Button stop;
private Button start;
public void init()
stop = new Button("暫停");start = new Button ("繼續(xù)");
theCounter = new Counter(this);
stop.addActionListener(new Lst() implements ActionListener
public void actionPerformed(ActionEvent e)
theCounter.sus();
);
start.addActionListener(new SuspenListener());
add(start);
add(stop);
theCounter.start();
public vo正確答案:①stop.addActionListener(new ActionListener(){②class Counter extends Thread③synchronized(this)
參考解析:本程序使用線程類(lèi)“Counter”來(lái)實(shí)現(xiàn)計(jì)時(shí)的功能,該線程的線程體每1000毫秒循環(huán)一次,并在每次循環(huán)的開(kāi)始顯示剩余的時(shí)間。計(jì)時(shí)器的暫停和繼續(xù)通過(guò)線程的同步與共享來(lái)完成,每次循環(huán)結(jié)束時(shí),判斷標(biāo)志暫停的變量“isHold”是否為真,如果為真則進(jìn)入掛起狀態(tài)。當(dāng)用戶按下“暫?!卑粹o,程序調(diào)用Counter類(lèi)的sus()方法,將變量“isHold”設(shè)為真。當(dāng)用戶按下“繼續(xù)”按鈕,程序調(diào)用Counter類(lèi)的conti()方法,將變量“isHold”設(shè)為假,并使用notify()取消線程的掛起狀態(tài)。本題第1個(gè)錯(cuò)誤是考查對(duì)匿名類(lèi)的使用。匿名類(lèi)是Java語(yǔ)言中比較特殊的一種類(lèi),這種類(lèi)不存在類(lèi)名,而且只能在聲明的時(shí)候被實(shí)例化一次。匿名類(lèi)必須繼承于一個(gè)父類(lèi)或?qū)崿F(xiàn)一個(gè)接口。第1條橫線處,原程序打算聲明一個(gè)新類(lèi) Lst實(shí)現(xiàn)ActionListener接口,并同時(shí)實(shí)例化一個(gè)新對(duì)象。但是只有匿名類(lèi)才能在聲明時(shí)創(chuàng)建一個(gè)新的類(lèi)對(duì)象。因此此處應(yīng)改用匿名類(lèi)實(shí)現(xiàn)程序的目的。第2個(gè)錯(cuò)誤處考查Java源程序的結(jié)構(gòu)。任何一個(gè)“java”文件中有且只有一個(gè)被聲明為public的類(lèi),這個(gè)類(lèi)的名字必須與“java”文件的文件名相同。因此在第2個(gè)錯(cuò)誤位置處必須去掉 public聲明。synchronized用來(lái)定義一個(gè)同步塊。synchronized的定義格式是synchronized (expression)statement,expression是對(duì)象或類(lèi)的名字,系統(tǒng)將為該對(duì)象設(shè)置唯一的鎖;statement可以是一個(gè)方法定義,也可以是一個(gè)語(yǔ)句塊,在同一時(shí)刻只能有一個(gè)線程執(zhí)行這個(gè)塊中的操作。因此第3個(gè)錯(cuò)誤處必須指明同步的對(duì)象,本題中的同步對(duì)象是當(dāng)前的Counter實(shí)例。運(yùn)行結(jié)果如下圖所示。 [*]
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。