首页 > 代码库 > java 多线程面试题
java 多线程面试题
1.什么是线程?
线程是操作系统能够运行的最小调度单位,他被包含在进程中,是进程中实际运作的单位。
2.线程和进程的区别
线程是进程的子集,一个进程有很多线程,每个线程执行不同的任务,不同的进程使用不同的内存空间,而所有线程共享一片内存空间,每个线程都有单独的栈内存用来存储本地数据。
3.如何在java中实现线程
java。lang。Thread的实例就是一个线程,继承Thread或实现runnable接口
4.用runnable接口,因为java不能实现多重继承
5.Thread类的run和start方法有什么区别
start方法用来启动新创建的线程,直接调用run在原来的线程中使用,没有启动新的线程,start方法才启动新的线程
6.runnable和callable有什么不同
callable的call方法可以返回值和抛出异常,而runnable的run方法没有,
7.java内存模型是什么
10 java中的volatile变量是什么?
只有成员变量可以使用他,volatile变量可以保证下一个读取操作会在前一个写操作之后发生,
11.什么是线程安全,vector是线程安全吗
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他变量的值也和预期的是一样的,就是线程安全的,
12 java中什么是竞态条件,举个例子说明
竞态条件会导致程序在并发情况下出现一些bugs,多线程对一些资源的竞争就会出现竞态条件,
13 一个线程运行时发生异常会怎样?
如果异常没有被捕获该线程将会停止执行
14 两个线程如何实现共享数据
可以通过共享对象来实现,
15 什么是threadlocal变量
每一个线程都有一个threadlocal就是每个线程都拥有自己独立的变量,竞争条件被彻底消除了,
16 什么是futuretask
表示一个可以取消的异步运算,他有启动和取消运算,
java 多线程面试题