Java考试
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。