java 多线程 选择题_Java多线程题库

本文详细介绍了Java多线程相关的填空题、选择题和判断题,涉及线程状态、线程控制方法、同步关键字`synchronized`、线程通信方法`wait()`、`notify()`和`notifyAll()`的使用,以及线程优先级和线程安全问题。内容覆盖了线程的生命周期、创建方式、线程同步和通信等多个核心知识点。
摘要由CSDN通过智能技术生成

一、填空题

处于运行状态的线程在某些情况下,如执行了sleep(睡眠)方法,或等待I/O设备等资源,将让出CPU并暂时停止自己的运行,进入____阻塞_____状态。

处于新建状态的线程被启动后,将进入线程队列排队等待CPU,此时它已具备了运行条件,一旦轮到享用CPU资源就可以获得执行机会。上述线程是处于就绪状态。

解析: 线程的生命周期—五个阶段

新建状态---- new关键字创建线程对象

就绪状态---- start()方法运行之前

运行状态---- run()方法的运行

堵塞状态--- interrupt()  sleep()  join()  yield()  wait() 等方法

死亡状态--- stop()方法(已过时) /或run()方法运行结束

一个正在执行的线程可能被人为地中断,让出CPU的使用权,暂时中止自己的执行,进入阻塞状态。

解析:人为的中断正在执行的线程---- 执行wait() 、interrupt() 、sleep()方法等

在Java中编写实现多线程应用有两种途径:一种是继承Thread类创建线程,另一种是实现Runnable接口创建线程。

解析: 继承Thread类来创建线程,不能实现资源的共享,除非资源使用static修饰。

实现Runnable接口创建线程,此时还需要借助Thread类,因为Runnable接口

没有start()方法,同时Thread类是Runnable接口的子类….

在线程控制中,可以调用_____join()____方法,阻塞当前正在执行的线程,等插队线程执行完后后再执行阻塞线程。

多线程访问某个共享资源可能出现线程安全问题,此时可以使用______synchronized_____关键字来实现线程同步,从而避免安全问题出现,但会影响性能,甚至出现死锁。

在线程通信中,调用wait( )可以是当前线程处于等待状态,而为了唤醒一个等待的线程,需要调用的方法是____notify()/notifyAll()__________。

解析:线程等待使用wait()方法,此方法最先是存在于Object类,Thread类继承Object类,可以获取此方法,同时notify()方法和notifyAll()方法---线程唤醒,最先也是存在于

Object类当中。

在线程通信中,可以调用wait()、notify()、notifyAll()三个方法实现线程通信,这三个方法都是____Object____类提供的public方法,所以任何类都具有这三个方法。

二、选择题

1.

下列关于Java线程的说法正确的是(A)。(选择一项)

A

每一个Java线程可以看成由代码、一个真实的CPU以及数据三部分组成

B.

创建线程的两种方法中,从Thread类中继承方式可以防止出现多父类的问题

C.

Thread类属于java.util程序包

D.

使用new Thread(new X()).run();方法启动一个线程

解析:

A、语句正确。

B、创建线程两种方法:一是继承Thread类,一是实现Runnable接口

根据Java语言类的单继承特性,防止出现多继承,但是可以实现多

重继承,也可以出现多父类。

C、Thread类是存在于java.lang包下

D、启动一个线程是调用start()方法,之后JVM会默认的调用run()方法

run()方法是线程的主体,核心代码放到此方法当中。

2.

以下选项中可以填写到横线处,让代码正确编译和运行的是(  AD)。(选择一项)

public class Test implements Runnable {

public static void main(String[] args) {

___________________________________

t.start();

System.out.println("main");

}

public void run() {

System.out.println("thread1!");

}

}

A.

Thread t = new Thread(new Test());

B.

Test t = new Test();

C.

Thread t = new Test();

D.

Thread t = new Thread();

解析:

线程的创建有两种方式,其中之一就是实现Runnable接口。

此接口只有一个抽象方法---run()方法,启动线程又需要start()方法

此时还需要借助Thread类,根据Thread类的构造方法:

Public  Thread(Runnable  run)

需要传入Runnable接口对象

此题还有一个方法: 直接创建Thread类对象,调用start()方法

所以D选项也是正确的,但是此题重点还是考的子类实现Runnable接口

根据Thread类的构造方法启动线程。

3.

如下代码创建一个新线程并启动线程,问:四个选项中可以保证正确代码创建target对象,并能编译正确的是(C)?(选择一项)

public static void main(String[] args) {

Runnable target=new MyRunnable( );

Thread myThread=new Thread(target);

}

A

public class MyRunnable extends Runnable {

public void run( ) {        }

}

B.

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java选择题题库是一种包含了一系列针对Java编程语言的选择题的资源库。这些选择题具有不同的难度级别和不同的主题,旨在帮助学习者更好地理解和掌握Java语言的各个方面。 Java选择题题库的使用对于学习者来说具有很大的好处。首先,通过解答选择题,学习者可以检验自己对Java语言的知识掌握程度。这可以帮助他们发现自己的不足之处,并将精力放在需要加强的知识点上。此外,通过解答选择题,学习者还可以加深对Java语言相关概念和知识的理解和记忆。 Java选择题题库可以涵盖Java语言的各个方面,比如基本语法、数据类型、控制流、面向对象编程、异常处理、多线程编程、输入输出、集合框架等等。这样的题库可以帮助学习者全面而系统地学习Java语言,并在各个方面都有所提高。 除了作为学习工具外,Java选择题题库还可以用于考试或评估学习者的水平。教育机构或培训机构可以使用这样的题库来组织考试,评估学生对Java语言的掌握情况。这样的题库可以提供一种客观的评估方式,帮助教育机构或培训机构更好地了解学生的学习状况,进行科学的教学安排。 总之,Java选择题题库是一种有益的学习资源,可以帮助学习者巩固和提高对Java语言的理解和应用能力。无论是个人学习还是教育考试,Java选择题题库都是一个有用的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值