java基础语法练习第十章

两种实现多线程方式的对比分析

1、下列关于线程的说法中,错误的是( )
A、线程就是程序
B、线程是一个程序的单个执行流
C、多线程用于实现线程并发程序
D、多线程是指一个程序的多个执行流
您提交的答案: 【A】

正确答案是:【A】

线程的生命周期及状态转换

2、
下列关于Thread类的说法中,错误的是( )
A、继承Thread类创建线程的方式可以防止出现多父类问题
B、Thread类属于java.util包
C、继承Thread的方式定义线程后,覆写的run()方法会在该线程的start()方法被调用后被JVM自动运行
D、继承Thread的方式定义线程后,你不能在继承其他的类了,导致程序的可扩展性大大降低
您提交的答案: 【B】

正确答案是:【B】

3、
阅读下列的程序
public class Demo extends Thread implements Runnable{ -----①
public void run(){
System.out.println(“this is run()”);
}

public static void main(String args[]){
Thread thread=new Thread(new Demo()); -----②
thread.start();
}
}
下列关于程序运行结果的说法中,正确的是()
A、①行出现编译错误
B、②行出现编译错误
C、出现运行错误
D、程序正常执行输出thisisrun()
您提交的答案: 【D】

正确答案是:【D】

4、
下列有关线程的两种创建方式说法错误的是( )
A、通过继承Thread类与实现Runnable接口都可以创建多线程程序
B、实现Runnable接口相对于继承Thread类来说,可以避免由于Java的单继承带来的局限性
C、通过继承Thread类与实现Runnable接口创建多线程这两种方式没有区别
D、大部分的多线程应用都会采用实现Runnable接口方式创建
您提交的答案: 【C】

正确答案是:【C】
5、
下列关于线程状态转换的描述中,错误的是( )
A、死亡状态下的线程调用start()方法可以使其重新进入就绪状态
B、运行状态下的线程调用wait()方法可以使其进入到阻塞状态
C、线程获得CPU使用权后会从就绪状态转换成运行状态
D、线程失去CPU使用权后会从运行状态转换成就绪状态
您提交的答案: 【A】

正确答案是:【A】
6、
wait()方法作用是( )
A、唤醒线程
B、导致线程等待
C、线程休眠
D、结束线程
您提交的答案: 【B】

正确答案是:【B】
7、
notify()方法作用是( )
A、唤醒线程
B、导致线程等待
C、线程休眠
D、结束线程
您提交的答案: 【A】

正确答案是:【A】

线程的优先级

8、线程的优先级用1-10之间的整数表示,默认的优先级是( )
A、1
B、10
C、3
D、5
您提交的答案: 【D】

正确答案是:【D】

9、下列关于线程优先级的描述,错误的是( )
A、NORM_PRIORITY代表普通优先级,默认值是5
B、一般情况下,主函数具有普通优先级
C、新建线程的优先级默认为最低
D、优先级高的线程获得先执行权的几率越大
您提交的答案: 【C】

正确答案是:【C】

线程休眠

10、
JAVA中调用Thread类的sleep()方法后,当前线程状态如何转换( )
A、由运行状态进入阻塞状态
B、由运行状态进入等待状态
C、由阻塞状态进入等待状态
D、由阻塞状态进入运行状态
您提交的答案: 【B】

正确答案是:【A】
11、
下列关于Thread类中sleep()方法的描述,错误的是( )
A、sleep()可以指定线程休眠的时间
B、sleep()方法指定时间结束后,线程进入了运行状态
C、sleep()是一个静态方法
D、调用sleep()方法,线程进入阻塞状态
您提交的答案: 【B】

正确答案是:【B】

线程让步

1、

public class Demo {
public static void main(String[] args) {
ThreadDemo td=new ThreadDemo();
Thread th1=new Thread(td);
Thread th2=new Thread(td);
th1.setName(“a”);
th2.setName(“b”);
th1.start();
th2.start();
}
}

class ThreadDemo implements Runnable {
public void run() {
for(int i=0;i<5;i++){
String name= Thread.currentThread().getName();
if(“a”.equals(name)){
System.out.print(“线程”+name+”让步”);
Thread.___________;
}
}
}
}
上述程序中,在横线位置补全下列哪段代码,可以实现线程a让步线程b( )
A、Thread.sleep(10)
B、Thread.yield()
C、Thread.start()
D、Thread.wait()
您提交的答案: 【B】

正确答案是:【B】
2、
下列方法中,可以实现线程让步的是( )
A、sleep()
B、wait()
C、yield()
D、join()
您提交的答案: 【C】

3、下面关于yield方法描述正确的是( )
A、yield方法是用于合并线程
B、yield方法是用于启动线程
C、yield方法是用于线程让步
D、yield方法是用于线程同步
您提交的答案: 【C】

正确答案是:【C】
正确答案是:【C】

线程插队

1、下列方法中可以实现线程插队的是( )
A、start()
B、run()
C、join()
D、sleep()
您提交的答案: 【C】

正确答案是:【C】
2、下面关于join()方法描述正确的是( )
A、join()方法是用于线程休眠
B、join()方法是用于线程启动
C、join()方法是用于线程插队
D、join()方法是用于线程同步
您提交的答案: 【C】

正确答案是:【C】

3、下列关于线程插队的说法正确的是( )
A、当在某个线程中调用其它线程的join()方法时,调用的线程将被阻塞,直到被join()方法加入的线程执行完成后它才会继续运行
B、当在某个线程中调用其它线程的join()方法时,调用的线程将被继续运行
C、当在某个线程中调用其它线程的join()方法时,调用的线程将永远不再执行
D、当在某个线程中调用其它线程的join()方法时,调用的线程和被join()方法加入的线程同时执行
您提交的答案: 【A】

正确答案是:【A】

同步代码块

1、以下写法中可以正确定义一个同步代码块的是( )
A、synchronized(常量){}
B、synchronized(对象){}
C、synchronized(){}
D、synchronized(任意基本数据类型){}
您提交的答案: 【B】

正确答案是:【B】

2、下列属于定义同步代码块的关键字的是( )
A、abstract
B、volatile
C、synchronized
D、goto
您提交的答案: 【C】

正确答案是:【C】

同步方法

1、下面关于静态同步方法说法错误的是( )
A、静态方法必须使用class对象来同步。
B、对于静态的同步方法而言,该方法的同步监视器不是this,而是该类本身。
C、静态同步方法和以当前类为同步监视器的同步代码块不能同时执行。
D、一个类中的多个同步静态方法可以同时被多个线程执行。
您提交的答案: 【D】

正确答案是:【D】

2、下列有关Java多线程中静态同步方法的说法错误的是( )
A、静态方法必须使用class对象来同步
B、在使用synchronized块来同步方法时,非静态方法可以通过this来同步,而静态方法必须使用class对象来同步
C、静态同步方法和以当前类为同步监视器的同步代码块不能同时执行
D、静态同步方法不可以和以this为同步监视器的同步代码块同时执行
您提交的答案: 【D】

正确答案是:【D】

3、
下列有关Java多线程中静态同步方法的说法正确的是( )
A、对于静态的同步方法而言,该方法的同步监视器不是this,而是该类本身
B、在使用synchronized块来同步方法时,静态方法可以使用class对象来同步,也可以使用this来同步
C、一个类中的多个同步静态方法可以同时被多个线程执行
D、不同类中的静态同步方法被多线程访问的时候线程间需要等待
您提交的答案: 【D】

正确答案是:【A】

死锁

1、
Java多线程中,关于解决死锁的方法说法错误的是( )
A、避免存在一个进程等待序列{P1,P2,…,Pn},其中P1等待P2所占有的某一资源,P2等待P3所占有的某一源,……,而Pn等待P1所占有的的某一资源,可以避免死锁
B、打破互斥条件,即允许进程同时访问某些资源,可以预防死锁,但是,有的资源是不允许被同时访问的,所以这种办法并无实用价值
C、打破不可抢占条件。即允许进程强行从占有者那里夺取某些资源。就是说,当一个进程已占有了某些资源,它又申请新的资源,但不能立即被满足时,它必须释放所占有的全部资源,以后再重新申请。它所释放的资源可以分配给其它进程。这样可以避免死锁
D、使用打破循环等待条件(避免第一个线程等待其它线程,后者又在等待第一个线程)的方法不能避免线程死锁
您提交的答案: 【D】

正确答案是:【D】

2、
关于线程的死锁,下面的说法正确的是( )
A、若程序中存在线程的死锁问题,编译时不能通过
B、线程的死锁是一种逻辑运行错误,编译器无法检测
C、实现多线程时死锁不可避免
D、为了避免死锁,应解除对资源以互斥的方式进行访问
您提交的答案: 【B】

正确答案是:【B】
3、
下列情况中,不会使线程返回所持有的对象锁的是( )
A、当synchronized()语句块执行完毕
B、当调用了线程的suspend()方法
C、当在synchronized()语句块中出现异常(exception)
D、当持有锁的线程调用该对象的wait()方法
您提交的答案: 【B】

正确答案是:【B】

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小魔女千千鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值