1和多線程有幾種實現方式。它們是什麽?有幾種方法可以實現同步。它們是什麽?
答:多線程有兩種實現方式,繼承Thread類和實現Runnable接口。
實現同步有兩種方式,即同步、等待和通知。
2.線程的基本概念,線程的基本狀態以及狀態之間的關系。
答:線程是指在程序執行過程中,能夠執行程序代碼的執行單元。每個程序至少有壹個線程,也就是程序本身。
Java中的線程有四種狀態:運行、就緒、暫停和結束。
3.sleep()和wait()有什麽區別?
答:sleep是壹種類似線程的方法,它使這個線程暫停執行壹段指定的時間,把執行的機會讓給其他線程,但監控狀態保持不變,過了這段時間就會自動恢復。調用sleep不會釋放對象鎖。
Wait是Object類的壹個方法。在這個對象上調用wait方法會導致這個線程放棄對象鎖,進入等待鎖池等待這個對象。只有在為這個對象發出notify方法(或notifyAll)後,這個線程才進入對象鎖池獲取對象鎖,進入運行狀態。
4.當壹個線程進入壹個對象的同步方法時,其他線程可以進入該對象的其他方法嗎?
答:不,壹個對象的同步方法只能被壹個線程訪問。
5.Thread和Runnable有什麽區別?
JAVA線程控制程序執行的主要路徑。當您用java命令調用JVM時,JVM會創建壹個隱式線程來執行main方法。Thread類為主線程調用其他線程並行運行提供了壹種機制。
Runnable接口定義了壹個可以被線程運行的類。實現Runnable的類只需要實現run方法。您可以靈活地擴展從其他父類繼承的現有類。而Thread不行,因為java只允許繼承壹個父類。
6.啟動壹個線程是run()還是start()。
答:啟動壹個線程就是調用start()方法,讓線程代表的虛擬處理器處於可運行狀態,也就是說可以被JVM調度執行。這並不意味著線程會立即運行。run()方法可以通過生成壹個必須退出的標誌來停止線程。
7.請告訴我妳對線程同步的了解。
答:wait():將壹個線程置於等待狀態,釋放被持有對象的鎖。
Sleep():這是壹個靜態方法,用於將正在運行的線程置於睡眠狀態。調用此方法來捕獲InterruptedException。
Notify():喚醒壹個等待的線程。註意,在調用這個方法時,不能準確地喚醒壹個正在等待的線程,而是由JVM決定喚醒哪個線程,而不是根據優先級。
Allnotity():喚醒所有處於等待狀態的線程。註意,並不是給所有被喚醒的線程壹個對象的鎖,而是讓它們競爭。
8.允許在Java中創建多線程應用程序的接口是()。
可讀的
以上不可克隆D
分析的
9.在JAVA編程中,實現Runnable接口時必須實現的方法是()。
Await() Brun()
Cstop() Dstart()
分析b
10,JAVA線程編程,如果讓線程休眠,可以用()方法。
astart()Bclose();
cset daemon();dsleep();
分析d
當妳編譯並運行下面的代碼時會發生什麽?
公共類測試擴展線程{
私有字符串sThreadName
公共靜態void main(String args[]) {
測試h =新測試();
h . go();
}
測試(){
}
測試(字符串){
sThreadName = s;
}
公共字符串getThreadName() {
返回sThreadName
}
公共void go() {
Test first = new Test(" first ");
first . start();
測試秒=新測試(“秒”);
second.start()。
}
public void start() {
for(int I = 0;我& lt2;i++) {
system . out . println(getThreadName()+I);
嘗試{
thread . sleep(100);
} catch (InterruptedException e) {
system . out . println(e . getmessage());
}
}
}
}
編譯錯誤
b輸出first0,second0,first1,second1。
c輸出first0,first1,second0,second1。
運行時錯誤
答案:c。
12.當妳編譯並運行下面的代碼時會發生什麽?
公共類測試{
公共靜態void main(String argv[]) {
Pmcraven pm1 =新pm craven(" one ");
pm 1 . run();
Pmcraven pm2 =新Pmcraven("二");
PM2 . run();
}
}
Pmcraven類擴展線程{
私有字符串sTname =
Pmcraven(字符串s) {
sTname = s;
}
公共無效運行(){
for(int I = 0;我& lt2;i++) {
嘗試{
睡眠(1000);
} catch (InterruptedException e) {
}
收益率();
system . out . println(sTname);
}
}
}
a編譯錯誤b輸出1122。
c輸出壹二壹二D輸出壹二壹二。
答案b
13.壹個完整的URL地址由哪些部分組成?
答:壹個完整的URL由四部分組成:資源類型、存儲資源的主機域名、資源文件名和端口。
其中:資源類型:指的是服務協議類型,比如Web服務器的地址。
電路連接DURL
回答a
19.Java中的事件處理機制?
答:從事件源到偵聽器的事件傳輸是通過對目標偵聽器對象的Java方法調用來完成的。對於每個特定的事件,都會相應地定義壹個特定的Java方法。這些方法在EventListener接口中定義,該接口繼承java.util.EventListener。實現事件偵聽器接口中的部分或全部方法的類是事件偵聽器。隨著事件的發生,相應的狀態通常封裝在事件狀態對象中,該對象必須從java.util.EventObject繼承。事件狀態對象作為單個參數傳遞給應響應事件的偵聽器方法。發出特定事件的事件源的標識是根據指定的設計格式為事件偵聽器定義註冊方法,並接受對指定事件偵聽器接口實例的引用。有時,當事件偵聽器不能直接實現事件偵聽器接口,或者有其他額外的操作時,有必要在源和壹個或多個其他偵聽器之間插入事件適配器類的實例,以建立它們之間的連接。
20.簡述適配器和監控接口的區別。
21,下面的()方法用於獲取事件源。
AgetEvent() BgetCommand()
CgetText() DgetSource()
答案d
22.在下面的代碼中,如果單擊“測試”按鈕,標準輸出消息是()。
公開課練習擴展JFrame{
公共練習(){
Super(“事件測試”);
按鈕b =新建按鈕(“測試”);
b . addmouse listener(new Tester());
this . add(b);
this.setSize(200,150);
this . setdefaultcloseoperation(JFrame。EXIT _ ON _ CLOSE);
this . set visible(true);
}
}
類測試器實現MouseListener{
public void action performed(action event e){
System.out.println("按鈕動作");
}
public void mouse clicked(mouse event e){
System.out.println("按鈕已點擊");
}
public void mouse pressed(mouse event e){ }
public void mouse released(mouse event e){ }
public void mouse enter(mouse event e){ }
public void mouse exited(mouse event e){ }
}
“按鈕操作”b“按鈕被點擊”
c“按鈕動作”和“按鈕被點擊”在d上面都是錯的。
答案b
23.請描述創建菜單的步驟。
圖書P95
24.簡述實現JDialog對話框的步驟。
書籍P104
25.在正則表達式中,()符號用於匹配單個字符。
A.b?
C* D+
答案b
26、下列()符號用於匹配壹次或多次。
A.b?
C* D+
答案d
27.下面的正則表達式是:
(\d{1,3}\。){3}\d{1,3}
給出正則表達式描述的匹配字符()。
註意:\d匹配數字字符(0 ~ 9);{n}匹配確定的n次,其中n為非負整數。
{n,m}匹配最少n次最多m次,其中m和n為非負整數,其中n ≤ m。