• Java错题归纳day19


    1. 下面关于程序编译说法正确的是()

    A java语言是编译型语言,会把java程序编译成二进制机器指令直接运行
    B java编译出来的目标文件与具体操作系统有关
    C java在运行时才进行翻译指令
    D java编译出来的目标文件,可以运行在任意jvm上
    答案:C
    解析:
    A:注意java编译成的是字节码,(而不是直接的二进制机器码。不然要JVM是吃干饭的嘛),被JVM翻译为机器码,所谓的一次编程多平台应用
    B:java源文件生成的是class文件,与系统无关
    C:字节码和机器码不是一回事,java运行时字节码才会被jvm翻译成机器码,所以说java是解释性语言。
    D:jvm的版本是会影响的,就像这衣服你能穿不代表他能穿啊

    2. 下面那些情况可以终止当前线程的运行?

    A 当一个优先级高的线程进入就绪状态时
    B 抛出一个异常时
    C 当该线程调用sleep()方法时
    D 当创建一个新线程时
    答案:B
    解析:
    优先级高的并不一定会马上执行。
    sleep方法阻塞一个线程并不会终止
    创建一个新的线程时也不会终止另一个线程
    当抛出一个异常后程序会结束,所以线程也会被终止

    注意:
    要区分“终止” 和 “阻塞”:
    终止:这个线程不会在进入“就绪态”,宣告死亡,即“死亡状态”。
    阻塞:进入阻塞态的线程还可以再进入“就绪态”,等待下一次 CPU 时间。
    然后是对线程的 5 个状态的理解:

    1. 新建,刚刚新建的线程,还未进入就绪队列
    2. 就绪,进入就绪队列的线程拥有了获得 CPU 时间的机会,但不是一定会马上执行,与线程调度有关。
    3. 运行,获得了 CPU 时间,正在被执行的线程。
    4. 阻塞,进入阻塞状态的线程只是暂时失去了 CPU 时间,该类线程没有结束,“阻塞态”的线程只能进入到“就绪态”。
    5. 死亡,死亡的线程即彻底结束了。

    下面总结下使一个线程进入阻塞状态的方法:

    1. sleep() / suspend()
    2. 发生IO阻塞
    3. 等待同步锁
    4. 等待通知

    解除一个线程的阻塞状态,使之进入就绪态的方法:

    1. sleep() 指定的睡眠时间到了
    2. IO阻塞解除
    3. 获得同步锁
    4. 收到通知
    5. 调用了 suspend() 的线程阻塞后,再调用 resume() 解除阻塞

    3. 下面程序的运行结果:()

    public static void main(String args[]) {
    Thread t=new Thread(){
    public void run(){
    dianping();
    }
    };
    t.run();
    System.out.print("dazhong"); }
    static void dianping(){
    System.out.print("dianping");
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    A dazhongdianping
    B dianpingdazhong
    C a和b都有可能
    D dianping循环输出,dazhong夹杂在中间
    答案:B
    解析:本题中,线程t并没有启动,只是调用了run()方法,程序中运行的线程依然只有一个,那么程序会按照顺序执行,即先运行run(),run()方法调用dianping()方法输
    出"dianping",程序继续向下执行输出"dazhong"。如果本题中t线程调用start()方法,就会出现C选项的情况。

    4. public interface IService {String NAME=“default”;}默认类型等价表示是哪一项:

    A public String NAME=“default”;
    B public static String NAME=“default”;
    C public static final String NAME=“default”;
    D private String NAME=“default”;
    答案:C
    解析:接口中的变量默认是public static final 的,方法默认是public abstract 的

  • 相关阅读:
    软件库V1.2版本开源-首页UI优化
    软件系统集成企业如何实施CMMI认证
    2023 年值得关注的软件测试趋势
    【信息检索与数据挖掘期末笔记】(三)文档评分
    怎么给二维码添加文字或logo?快速美化二维码的使用技巧
    Ubuntu源码编译samba
    Linux中mysql的安装、远程访问、基础操作、文件导入
    React 组件的3大属性: state
    什么是RPA机器人流程自动化软件?
    【高德地图】Android搭建3D高德地图详细教
  • 原文地址:https://blog.csdn.net/m0_52322019/article/details/126025345