zoukankan      html  css  js  c++  java
  • 多线程中的一些问题

    今天整理出了一些 面试题,给大家分享下 1.进程和线程之间有什么不同? 一个进程是一个独立的运行环境,他可以被看做一个程序或者一个应用. 而线程是在进程中执行的一个单元.java运行环境是一个包含 了不同类和程序的单一 进程.线程可以被称为轻量级的进程.线程需要较少的资源来创建和驻留在进程 中 , 并且可以共享进程中的资源. 2.多线程编程的好处是什么? 在多线程程序中,多个线程被并发的执行以提高程序的效率 ,cpu不会因为某个线程 需要等待资源而进入空闲状态.多个线程共享堆内存,因此创建多个线程去执行一些任务 会比创建多个进程更好.举个例子,servlets比cgi更好,是因为servlets支持多线程而cgi不支持. 3.用户线程和守护线程有什么区别? 当我们在java程序中 创建一个线程,它就被称为用户线程 .一个守护线程是在后台执行 并且不会阻止jvm终止的线程.当没有用户线程在运行的时候,jvm关闭程序并且推出. 一个守护线程创建的子线程 依然是守护线程. 4.你对线程优先级的理解是什么? 每一个线程都是有优先级的,一般来说,高优先级的线程在运行时会具有优先权,但这 依赖于线程调度的实现,这个实现是和操作系统相关的.我们可以定义线程的优先级, 但是并 不能抱住高优先级的线程会在低优先级的线程几千执行.线程优先级是一个int 变量(从1-10),1代表最低优先级,10代表最高优先级. 5. 什么是线程调度器和时间分片? 线程调度器是一个操作系统服务,他负责为Runnble状态的线程分配cpu时间. 一旦我们创建一个线程并启动它,他的执行便依赖于线程调度器的实现.时间分片是指将可用的cpu时间分配给可用的runnable线程的过程.分配cpu时间可以给予线程优先级或者线程等待时间.线程调度并不受java虚拟机控制,所以由应用程序来控制它是更好的选择. 6. 在多线程中,什么是上下文切换(context-switching)? 上下文切换是存储和恢复CPU状态的过程,它使得线程执行能够从中断点恢复执行。上下文切换是多任务操作系统和多线程环境的基本特征。 7.线程之间是如何通信的? 当线程间是可以共享资源时,线程间通信是协调它们的重要的手段。Object类中wait() otify() otifyAll()方法可以用于线程间通信关于资源的锁的状态。点击这里有更多关于线程wait, notify和notifyAll. 8.为什么线程通信的方法wait(), notify()和notifyAll()被定义在Object类里? Java的每个对象中都有一个锁(monitor,也可以成为监视器) 并且wait(),notify()等方法用于等待对象的锁或者通知其他线程对象的监视器可用。在Java的线程中并没有可供任何对象使用的锁和同步器。这就是为什么这些方法是Object类的一部分,这样Java的每一个类都有用于线程间通信的基本方法 9. 什么是ThreadLocal? ThreadLocal用于创建线程的本地变量,我们知道一个对象的所有线程会共享它的全局变量,所以这些变量不是线程安全的,我们可以使用同步技术。但是当我们不想使用同步的时候,我们可以选择ThreadLocal变量。 每个线程都会拥有他们自己的Thread变量,它们可以使用get()set()方法去获取他们的默认值或者在线程内部改变他们的值。ThreadLocal实例通常是希望它们同线程状态关联起来是private static属性。在ThreadLocal例子这篇文章中你可以看到一个关于ThreadLocal的小程序。 10. 什么是Thread Group?为什么建议使用它? ThreadGroup是一个类,它的目的是提供关于线程组的信息。 ThreadGroup API比较薄弱,它并没有比Thread提供了更多的功能。它有两个主要的功能:一是获取线程组中处于活跃状态线程的列表;二是设置为线程设置未捕获异常处理器(ncaught exception handler)。但在Java 1.5中Thread类也添加了setUncaughtExceptionHandler(UncaughtExceptionHandler eh) 方法,所以ThreadGroup是已经过时的,不建议继续使用。
  • 相关阅读:
    太可爱了!CSS3 & SVG 制作的米老鼠钟表
    20个免费的 AngularJS 资源和开发教程
    比尔盖茨:反垄断案让我分心,不然微软定能打败安卓(胜者通吃的行业要不计代价的三班倒,评论很精彩)
    C++11 新特性之智能指针(shared_ptr, unique_ptr, weak_ptr)
    C++编译器会对没有构造函数的类生成默认构造函数吗?(有必要的时候才生成,要看情况。有反汇编验证)
    qt5信息提示框QMessageBox用法(很全)
    (RPC) Remote Procedure Call Protocol 远程过程调用协议
    分布式事务就是由多个本地事务组合而成的事务
    内存管理--虚拟内存管理技术
    NET适合搞大数据,机器学习、人工智能
  • 原文地址:https://www.cnblogs.com/qiaoqiaodi/p/7092366.html
Copyright © 2011-2022 走看看