java多线程试题-答案

更新时间:2023-07-25 16:32:56 阅读: 评论:0

               
allegiance
多线程
一.选择题
1.下列说法中错误的一项是(A)
A.线程就是程序                    B.线程是一个程序的单个执行流
B.多线程是指一个程序的多个执行流 D.多线程用于实现并发
2.下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D)
A.等待阴塞状态下的线程被notify()
B.等待阻塞状态下的纯种被interrput()中断
C.等待时间到
D.等待阻塞状态下的线程调用wait()方法
3.下列哪个方法可以使线程从运行状态进入其他阻塞状态(A)
A.sleep            B.wait            C.yield            D.start
4.下列说法中错误的一项是(D)
A.一个线程是一个Thread类的实例
B.线程从传递给纯种的Runnable实例run()方法开始执行
C.线程操作的数据来自Runnable实例
D.仪式英文新建的线程调用start()方法就能立即进入运行状态
5.下列关于Thread类提供的线程控制方法的说法中,错误的一项是(D)
A.在线程A中执行线程B的join()方法,则线程A等待直到B执行完成
B.线程A通过调用interrupt()方法来中断其阻塞状态
C.若线程A调用方法isAlive()返回值为true,则说明A正在执行中
D.currentThread()方法返回当前线程的引用
6.下列说法中,错误的一项是()
A.rattle>chinabug对象锁在synchronized()语句执行完之后由持有它的线程返还sad什么意思
B.对象锁在synchronized()语句中出现异常时由持有它的线程返还
C.当持有锁的线程调用了该对象的wait()方法时,线程将释放其持有的锁
D.当持有锁的线程调用了该对象的构造方法时,线程将释放其持有的锁
7.下面的哪一个关键字通常用来对对象的加锁,从而使得对对象的访问是排他的  A
A.sirialize        B transient            C synchronized        D static
二.填空题
    1. 在操作系统中,被称做轻型的进程是  线程
    2. 多线程程序设计的含义是可以将一个程序任务分成几个并行的  任务   
    3. 在Java程序中,run()方法的实现有两种方式:    实现Runnable接口        继承Thread类       
    4 .多个线程并发执行时,各个线程中语句的执行顺序是        确定    的,但是线程之间的相对执行顺序是    不确定   
    6.Java中的对象锁是一种独占的 排他   
    7.程序中可能出现一种情况:多个线种互相等待对方持有的锁,而在得到对方的锁之前都不会释放自己的锁,这就是    死锁   
    8.线程的优先级是在Thread类的常数    MIN_PRIORITY 和    MAX_PRIORITY    高中英语常用词组之间的一个值
    9.处于新建状态的线程可以使用的控制方法是  start()    stop()   
    10.一个进程可以包含多个        线程           
三.简答题
1.说明几个概念: 对象锁、sleep、wait、notify、notifyAll
    对象锁:每个对象都有对象锁,当某个线程进入用synchronized定义方法时,就获得了当前类对象(方法所属的类的对象)的锁,其他线程就不能再获得该锁,直到线程释放该锁。一个类对象有一个对象锁,多个同步方法公用一个对象锁。
sleep:是当前线程处于休眠状态,将对cpu的控制权交给其他线程,但不释放当前对象的锁,其他线程可以获得cpu,但不能进入当前线程控制的对象锁。
wait:与sleep的区别是,它会释放对象锁,其他线程可以进入该同步块。
notify:进入当前同步块的线程调用wait方法变成休眠状态的线程,notify将该线程变成等待状态。
gunlock
notifyAll:进入当前同步块的线程调用wait方法变成休眠状态,notifyAll使所有休眠线程变成等待状态。 
一个类中有多个同步方法,进入任意一个同步块都将获得该对象锁,由于wait方法使进入同步块的线程休眠,notify只能唤醒所有被休眠线程中的一个,notifyAll可以唤醒所有休眠线程。通常线程的通信通过wait,notifyAll和wait条件来实现。
2. java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法 ? S
有两种实现方法,分别是继承simple Thread类与实现Runnable接口
synchronized关键字修饰同步方法
3. sleep()    wait()  有什么区别
   
    答: sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。wait
Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
4.  同步和异步有何异同,在什么情况下分别使用他们?举例说明。
答: 如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
5.  启动一个线程是用 run() 还是 start()?
答: 启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 
6.  多线程有几种实现方法 , 都是什么 ? 同步有几种实现方法大野智吧 , 都是什么
答: 多线程有两种实现方法,分别是继承 Thread类与实现Runnable接口deeply 
同步的实现方面有两种,分别是synchronized,waitnotify
7.    线程的基本状态以及状态之间的关系
Java中的线程有四种状态分别是:运行、就绪、挂起、结束
               

本文发布于:2023-07-25 16:32:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/188458.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:线程   方法   对象   状态   执行
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图