• Java基础知识强化之多线程笔记02:多线程之 面试题(常问)


    1. 多线程有几种实现方案,分别是哪几种 ?

    两种。

      继承Thread类
      实现Runnable接口

    扩展一种:实现Callable接口。这个得和线程池结合。

    2.  同步有几种方式,分别是什么?

    三种。

    1)同步代码块
    2)同步方法

    3)使用Lock锁 

    3.  启动一个线程是run()还是start()?它们的区别?
    start();

    run():封装了被线程执行的代码,直接调用仅仅是普通方法的调用
    start():启动线程,并由JVM自动调用run()方法

    4.  sleep()和wait()方法的区别
    sleep()必须指时间,不释放锁。(相当于操作系统中不释放信号量,霸占CPU使用权,别人始终用不了)
    wait()可以不指定时间,也可以指定时间,释放锁。(相当于操作系统中释放信号量,放弃了CPU使用权,别人就可以使用)

    wait()通常被用于线程交互,sleep()通常被用于暂停执行。

    5. 为什么wait(),notify(),notifyAll()等方法都定义在Object类中 ?
    因为这些方法的调用是依赖于锁对象的,而同步代码块的锁对象是任意锁
    而Object代码任意的对象,所以,定义在这里面。

  • 相关阅读:
    pytorch空间变换网络
    Jittor 的Op, Var算子
    元算子卷积层实现
    Caffe实现概述
    Halide视觉神经网络优化
    旷视MegEngine数据加载与处理
    旷视MegEngine网络搭建
    旷视MegEngine基本概念
    Torchvision模型微调
    新的一天
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4873041.html
Copyright © 2020-2023  润新知