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

  表示一个可以取消的异步运算,他有启动和取消运算,

 

posted @ 2017-03-02 20:46  随心2017  阅读(365)  评论(0编辑  收藏  举报