logo

慕课美学

第9章 Java单元测试

2019-11-18 Views Java 1059字 5 min read

⚠️⚠️⚠️ 注意,单元测验题目顺序不会发生变化,但答案选项顺序会发生变化,因此正确答案显示答案内容而非选项 ⚠️

  1. 单选(2分)Thread类在( )包中。
    A.java.awt
    B.java.lang
    C.java.io
    D.java.util
    正确答案:java.lang

  2. 单选(2分)启动线程时,需要调用( )方法。
    A.start()
    B.join()
    C.run()
    D.currentThread()
    正确答案:start()

    Thead类中start()方法和run()方法的区别
    1,start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状态(可运行状态),此时并没有运行,一旦得到CPU时间片,就自动开始执行run()方法。此时不需要等待run()方法执行完也可以继续执行下面的代码,所以也由此看出run()方法并没有实现多线程。
    2,run()方法是在本线程里的,只是线程里的一个函数,而不是多线程的。如果直接调用run(),其实就相当于是调用了一个普通函数而已,直接待用run()方法必须等待run()方法执行完毕才能执行下面的代码,所以执行路径还是只有一条,根本就没有线程的特征,所以在多线程执行时要使用start()方法而不是run()方法。
    3,把需要处理的代码放到run()方法中,start()方法启动线程将自动调用run()方法,这个由java的内存机制规定的。并且run()方法必需是public访问权限,返回值类型为void。
    4,当程序调用start方法一个新线程将会被创建,并且在run方法中的代码将会在新线程上运行

  3. 单选(2分)Runnable接口在( )包中。
    A.java.lang
    B.java.util
    C.java.awt
    D.java.io
    正确答案:java.lang

  4. 单选(2分)Thread类的sleep方法会抛出( )异常。
    A.SecurityException
    B.EOFException
    C.InterruptedException
    D.IOException
    正确答案:InterruptedException

  5. 单选(2分)线程a吵醒线程b时,正确的语句是( )。
    A.b.interrupt();
    B.a.interrupt();
    C.Thread.interrupt();
    D.interrupt();
    正确答案:b.interrupt();

  6. 多选(3分)以下选项中,( )属于线程中断状态。
    A.线程在运行期间,执行了一些阻塞线程的操作
    B.JVM将cpu的使用权从当前线程切换给其他线程
    C.线程执行了wait()方法
    D.线程执行了休眠方法
    正确答案:全选 ABCD

  7. 判断(2分)

    class SubThread extends Thread{
        public void run(){
            for (int i=1; i<=20; i++)
                System.out.print("次" + i + ", ");
        }
    }
    public class TestExtendsThread{
        public static void main(String[] args){
            SubThread sub = new SubThread();
            sub.start();
            for (int i=1; i<=20; i++)
                System.out.print("主" + i + ", ");
        }
    }
    

    上述语句中,sub.start();可以省略。( )
    A.✔️ B.✖️
    正确答案:✖️

  8. 判断(2分)

    class SubThread extends Thread{
        public void run(){
            for (int i=1; i<=20; i++)
            {
                System.out.print("次" + i + ", ");
                Thread.sleep(1000);
            }
        }
    }
    

    上述线程子类的声明是正确的。( )
    A.✔️ B.✖️
    正确答案:✖️

  9. 判断(2分)某个线程正在使用同步方法时,JVM不会把cpu的时间片分配给其他也要使用同步方法的线程。( )
    A.✔️ B.✖️
    正确答案:✔️

  10. 判断(2分)Thread类的使用wait()方法不会抛出异常。( )
    A.✔️ B.✖️
    正确答案:✖️

  11. 判断(2分)Thread类的使用wait()方法必须在同步方法中使用。( )
    A.✔️ B.✖️
    正确答案:✔️

  12. 判断(2分)Thread类的join()方法会抛出InterruptedException异常。( )
    A.✔️ B.✖️
    正确答案:✔️

  13. 判断(2分)一个线程联合另外一个线程的操作总是能成功。( )
    A.✔️ B.✖️
    正确答案:✖️

  14. 判断(2分)如果守护线程的任务是无限循环,则其他线程消亡之后,守护线程会一直执行下去。( )
    A.✔️ B.✖️
    正确答案:✖️

  15. 填空(2分)Runnable接口中的抽象方法是( )。
    正确答案:run()

  16. 填空(2分)

    class RunClass implements Runnable{
        (            ) void run(){
            for (int i=1; i<=20; i++)
                System.out.print("次" + i + ", ");
        }
    }
    

上述语句中,括号里应该填写( )。
正确答案:public
17. 填空(2分)获取当前正在使用cpu资源的线程对象的语句是( )。
正确答案:currentThread()
18. 填空(2分)被synchronized修饰的方法称为( )。
正确答案:同步方法



本文由慕课美学创作
该文章采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。转载请注明出处!
发布时间为:2019-11-18

support支付宝扫码打赏 support微信打赏
如果觉得这篇文章对您有帮助,可以请作者喝一杯饮料哦🥤