zoukankan      html  css  js  c++  java
  • java面试题-多线程篇十三

    什么是线程?

      线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的时机运作单位.程序员可以通过他进行多处理器编程,你可以使用多线程对运算密集型任务进行提速.比如,如果一个线程完成一个任务要100毫秒,那么用10个线程完成该任务只需10毫秒.

    线程和进程的区别?

      线程是进程的子集,一个进程可以有很多线程,每条线程并执行不同的任务,不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间,每个线程都拥有单独的栈内存用来存储本地数据.

    如何在java中实现线程?

      有两种方式:java.long.Thread类的实例就是一个线程但是它需要调用的Runnable接口来执行,由于线程类本身就是调用的Runnable接口,所以你可以调用java.long.Thread类或者直接调用Runnable接口来重写run()方法实现线程.

      继承Thread类:

      步骤:1.继承Thread 类2.覆盖run方法,把要运行的代码存储在run方法体中3.调用thread类的start的方法开启线程,在调用run方法

      实现Runnable

      步骤:1.实现Runnable 接口2.覆盖Runnable接口的run方法,将线程要运行的代码存储到run方法当中3.将实现Runnable接口的子类对象作为实际参数传递到Thread类的构造函数中.因为线程对象创建后必须要明确要允许的run方法,而Runnable方法所属的对象是Runnable方法所属的对象是Runnable接口的子类对象.4.调用thread类的start方法.

    两种实现多线程的比较?

      1.实现Runnable接口避免了单继承的局限性

      2.把线程运行的代码单独的封装到Runnable接口类型的对象中,这样实现了线程对象和任务对象的解耦.

    wait和sleep的区别?

      1.sleep指定时间,wait可以指定时间,也可以不指定时间.

      2.wait 方法必须定义在同步中,sleep方法不一定

      3.在同步中wait和sleep对于执行权和锁的处理不同:

        Sleep 释放CPU执行权,但是没有释放锁

        Wait释放执行权,释放锁

    线程池的作用?

      第一:降低资源消耗.通过重复利用已创建的线程简单线程创建和销毁造成的消耗

      第二:提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行

      第三:提高线程的可管理性,线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控

    为什么使用线程池?

      线程池的作用就是限制系统中执行线程的数量.

    根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果,少了浪费了系统资源,多了造成系统拥挤效率不高,用线程池控制线程数量,其他线程排队等候,一个任务只需完毕,再从队列中取最前面的任务开始执行,若队列中没有等待进程,线程池的这一资源处于等待,当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了;否则进入等待队列.

    线程的5种状态?

      1.被创建:即不具备资格也不具备执行权.

      2.运行:在此时只有一个线程在运行,线程具备了执行资格也具备了执行权.

      3.冻结;此时线程放弃了执行资格和执行权.

      4.消亡:释放路径.

      5.临时阻塞;具备执行资格,但是没有执行权,等待CPU切换到它执行.

      

  • 相关阅读:
    maven 执行mvn package/clean命令出错
    IDEA
    贝叶斯
    python基础之python基本数据类型
    python基础(一)python数据类型,条件,循环
    ...
    读取70开头的xml,gbk转成utf-8
    CSS实现多个Div等高,类似表格布局
    JBOSS 5 session时间配置
    padding
  • 原文地址:https://www.cnblogs.com/1218-mzc/p/8073968.html
Copyright © 2011-2022 走看看