线程面试题

  1. 简述线程的基本概念。程序,进程,线程的关系是什么?
    • 线程也是一个执行中的程序,但线程是一个比进程更小的执行单位。
    • 程序是指含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,程序是静态的代码;
    • 进程是程序的一次执行过程,是系统运行程序的基本单位,进程是动态的
    • 一个进程在其执行过程中可以产生多个线程,形成多条执行路径
  2. 什么是多线程?为什么程序的多线程功能是必要的?
    1. 多线程就是同时执行一个以上的线程,一个线程的执行不必等待另一个线程执行完后才执行,所有的线程都可以发生在同一个时刻,由于每一个进程的内部数据库和状态都是完全独立的,所以即使他们是同一个程序所产生,也必须重复许多的数据重复工作,而且在交换彼此数据的时候,也要再使用一些进程间的通信机制,这样就增加了系统负担。由于同一进程的各个线程之间可以共享相同的内存空间,并利用这些共享内存来完成数据交换,实时通信及必要的同步工作,所以各线程之间的通信速度很快,线程之间进行切换所占用的系统资源也比较少,所以引进多线程的功能是必要的。
  3. 多线程与多任务的差别是什么?
    1. 多任务与多线程是两个完全不同的概念,多任务是针对操作系统而言的,表示操作系统可以同时运行多个应用程序,而多线程是对一个进程而言的,表示在一个进程内部可以同时执行多个线程
  4. 线程有哪些基本状态,这些基本状态是如何定义的?
    1. 线程有五种基本状态:
      1. 新建状态
      2. 就绪状态
      3. 运行状态
      4. 阻塞状态】
      5. 消亡状态
    2. 新建状态时当一个Thread类或其子类的对象被声明并被创建,但还未被执行的这段时间,处于一种特殊的新建状态中;
    3. 就绪状态是指处于新建状态的线程被启动后,将进入线程队列排队等待CPU时间片,此时他已具备了运行的条件
    4. 运行状态表示,线程正在运行,该线程已经拥有了对CPU的控制权
    5. 阻塞状态是指一个正在执行的线程,如果子啊某些特殊情况下,间让出CPU并暂时终止自己的执行
    6. 消亡状态是指线程不具有继续执行的能力
  5. Java程序实现多线程有哪两个途径?
    1. Java语言中实现多线程的方法有两种:
      1. 一种是继承java.lang包中的Thread类,
      2. 另一种是用户在自定义自己的类中实现Runnable接口。
      3. 无论哪种方式实现多线程,都需将要执行的任务艾玛编写在run()方法中,然后启动线程从run()方法开始执行。
  6. 在什么情况下,必须以类实现Runnable接口来创建类?
    1. 如果一个类本身已经继承了某个父类,由于Java语言不允许类的多重继承,所以就无法在继承Thread类,特别是小程序,这种情况下若要实现多线程的功能可以创建一个类,该类必须来实现Runnable接口。
  7. 什么是线程的同步?程序中为什么要实现线程的同步?是如何实现的?
    1. 同步值得是处理数据的线程不能处理其他线程当前还没有处理完毕的数据;
    2. 程序中要实现多线程同步的原因是,多个线程之间共享数据时会使共享数据不安全或不合逻辑;
    3. 要实现对共享数据的同步,当一个线程对共享数据进行操作时,应使之称为一个“原子操作”,即在没有完成相关操作之前,不允许其他线程打断他,具体办法就是使用关键字synchronized来标识同步资源,这样个线程就可互斥的操作该同步资源。
      11/4/2020 9:37:41 PM
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值