Java 线程部分习题及解析

  • Post author:
  • Post category:java


1、下列关于线程的说法中,错误的是( )


A、线程就是程序


B、线程是一个程序的单个执行流

C、多线程用于实现线程并发程序

D、多线程是指一个程序的多个执行流

进程是一个应用程序,线程是比程序更小的执行单位

一个进程在执行中可以产生多个线程

2、下列关于进程和线程的说法中,错误的是( )

A、操作系统中每个独立执行的程序都可称之为一个进程

B、操作系统中的每一个进程中都至少存在一个线程

C、线程和进程一样,是由CPU轮流执行的


D、线程和进程一样,是由CPU同时执行的

由于CPU运行速度很快,能在极短的时间内在不同的进程之间进行切换,所以给人以同时执行多个程序的感觉。线程也是一样的

1、下列关于Thread类的说法中,错误的是( )

A、继承Thread类创建线程的方式可以防止出现多父类问题


B、Thread类属于java.util包


C、继承Thread的方式定义线程后,覆写的run()方法会在该线程的start()方法被调用后被JVM自动运行

D、继承Thread的方式定义线程后,你不能在继承其他的类了,导致程序的可扩展性大大降低

Thread类属于java.lang包

1、以下关于Runnable接口的描述错误的是( )

A、通过实现Runnable接口可以创建多线程程序

B、Runnable接口是在java.lang包下

C、实现Runnable接口必须重写run()方法


D、通过Runnable接口中的start()方法可以开启线程

首先,接口是没有方法的。其次,start()方法是属于Thread的。

1、下列有关线程的创建方式说法错误的是( )

A、通过继承Thread类与实现Runnable接口都可以创建多线程程序

B、实现Runnable接口相对于继承Thread类来说,可以避免由于Java的单继承带来的局限性


C、通过继承Thread类与实现Runnable接口创建多线程这两种方式没有区别


D、大部分的多线程应用都会采用实现Runnable接口方式创建

1、下列关于Java后台线程的描述,错误的是()

A、对Java程序来说,只要还有一个前台线程在运行,这个进程就不会结束

B、如果某个线程对象在启动之前调用了setDaemon(false)语句,这个线程就变成一个后台线程


C、在start()方法执行后,使用setDaemon(true)可以将线程设置为后台线程


D、只要进程中不存在前台线程,整个进程就会结束

对于java来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程运行,这个进程就会结束。

要将某个线程设置为后台线程,必须在该线程启动之前,也就是说setDaemon()方法在start方法之前调用,否则会引发IllegalThreadStateException异常。

1、notify()方法作用是( )


A、唤醒线程


B、导致线程等待

C、线程休眠

D、结束线程

2、

下列关于线程状态转换的描述中,错误的是( )


A、死亡状态下的线程调用start()方法可以使其重新进入就绪状态


B、运行状态下的线程调用wait()方法可以使其进入到等待状态

C、线程获得CPU使用权后会从就绪状态转换成运行状态

D、线程失去CPU使用权后会从运行状态转换成就绪状态

一旦进入死亡状态,线程将不再拥有运行的资格,也不能在转换到其他状态。

3、wait()方法作用是( )

A、唤醒线程


B、导致线程等待


C、线程休眠

D、结束线程

1、下列关于线程优先级的描述,错误的是( )

A、NORM_PRIORITY代表普通优先级,默认值是5

B、一般情况下,主函数具有普通优先级


C、新建线程的优先级默认为最低


D、优先级高的线程获得先执行权的几率越大

2、线程的优先级用1-10之间的整数表示,默认的优先级是( )

A、1

B、10

C、3


D、5

1、下列关于Thread类中sleep()方法的描述,错误的是( )

A、sleep()可以指定线程休眠的时间


B、sleep()方法指定时间结束后,线程进入了运行状态


C、sleep()是一个静态方法

D、调用sleep()方法,线程进入阻塞状态

sleep()方法使线程进入阻塞状态,指定时间结束后,线程进入了就绪状态

2、JAVA中调用Thread类的sleep()方法后,当前线程状态如何转换( )

A、由运行状态进入阻塞状态


B、由运行状态进入等待状态


C、由阻塞状态进入等待状态

D、由阻塞状态进入运行状态

1、下面关于yield方法描述正确的是( )

A、yield方法是用于合并线程

B、yield方法是用于启动线程


C、yield方法是用于线程让步


D、yield方法是用于线程同步

2、下列方法中,可以实现线程让步的是( )

A、sleep()

B、wait()


C、yield()


D、join()

3、关于Thread类yield()方法的作用,下列描述中正确的是( )

A、使线程由运行状态进入阻塞状态


B、使线程由运行状态进入就绪状态


C、使线程由阻塞状态进入等待状态

D、使线程由阻塞状态进入运行状态

yield()调用后,只是将线程转换成就绪状态,让系统调度器重新调度一次。

1、下面关于join()方法描述正确的是( )

A、join()方法是用于线程休眠

B、join()方法是用于线程启动


C、join()方法是用于线程插队


D、join()方法是用于线程同步

2、下列方法中可以实现线程插队的是( )

A、start()

B、run()


C、join()


D、sleep()

在这里插入图片描述



版权声明:本文为weixin_52796601原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。