博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java线程面试题摘要
阅读量:5874 次
发布时间:2019-06-19

本文共 1175 字,大约阅读时间需要 3 分钟。

 

5.1 什么是线程

一个程序可以执行多个任务,每一个任务成为线程;

5.2 线程和进程有什么区别

本质的区别是, 每个进程拥有自己的一整套变量,而线程则共享数据;

5.3 如何在 Java 中使用新线程

调用 Thread.start 方法, 这个方法将创建一个执行run方法的 新线程;

5.4 start() 和 run() 有什么区别

run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;

start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;

5.5 Thread.join 方法有什么用

join()方法,等待其他线程终止。在当前线程中调用另一个线程的join()方法,则当前线程转入阻塞状态,

直到另一个进程运行结束,当前线程再由阻塞转为就绪状态。

5.6 假如新建T1、T2、T3三个线程,如何保证它们按顺序执行?

用join()方法把T1、T2、T3合并成一个线程,就可以按照顺序执行了。

5.7 volatile 变量是做什么的

volatile关键字为域变量的访问提供了一种免锁机制,

使用volatile修饰域相当于告诉虚拟机该域可能会被其他线程更新,

因此每次使用该域就要重新计算,而不是使用寄存器中的值

5.8 如果一个线程中发生了异常会怎么样

可以定义这个线程异常捕获的处理器。

如果异常没有被捕获该线程将会停止执行。

 

5.9 什么是 ThreadLocal 变量

ThreadLocal是Java里一种特殊的变量。每个线程都有一个ThreadLocal就是每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了。

如果为每个线程提供一个自己独有的变量拷贝,将大大提高效率。首先,通过复用减少了代价高昂的对象的创建个数。

其次,你在没有使用高代价的同步或者不变性的情况下获得了线程安全。

5.10 什么是线程池,为什么要使用

在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。

创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。所以我们要创建线程池来节约创建的时间。

5.11 Thread.sleep 和 wait 方法有什么不同

wait()方法用于线程间通信,如果等待条件为真且其它线程被唤醒时它会释放锁。

sleep()方法仅仅释放CPU资源或者让当前线程停止执行一段时间,但不会释放锁。

5.12 synchronized 关键词是做什么的

synchronized关键字修饰的语句块。 

被该关键字修饰的语句块会自动被加上内置锁,从而实现同步。

转载于:https://www.cnblogs.com/ljj5/p/9470511.html

你可能感兴趣的文章
SCCM 2016 配置管理系列(Part8)
查看>>
zabbix监控部署
查看>>
struts中的xwork源码下载地址
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
CDays–4 习题一至四及相关内容解析。
查看>>
L3.十一.匿名函数和map方法
查看>>
java面向对象高级分层实例_实体类
查看>>
android aapt 用法 -- ApkReader
查看>>
[翻译]用 Puppet 搭建易管理的服务器基础架构(3)
查看>>
Android -- AudioPlayer
查看>>
Python大数据依赖包安装
查看>>
Android View.onMeasure方法的理解
查看>>
Node.js 爬虫初探
查看>>
ABP理论学习之仓储
查看>>
centos7下使用yum安装mysql
查看>>
How can I set ccshared=-fPIC while executing ./configure?
查看>>
2.移植uboot-添加2440单板,并实现NOR、NAND启动
查看>>
hadoop-2.6.5安装
查看>>
vmware虚拟机里的LINUX不能上网的原因一:虚拟网卡设置
查看>>
监控摄像机的区别和分类
查看>>