线程面试题面试题摘要

 

 

1 什么是线程

    线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
    一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

2 线程和进程有什么区别

    每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出 口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

3 如何在 Java 中使用新线程

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

    start():该方法是在当前线程中启动一个新的线程,而新启动的线程会调用run()方法,同时该方法不能重复调用;

      run()  :该方法和普通的方法一样,可以重复执行,不会创建新的线程。

 

5 Thread.join 方法有什么用

    阻塞当前线程,直到收到结束执行或者死亡。当接收者的interrupt方法被调用,并且它被调用了join方法的时候,就会抛出InteruptedException。

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

7 volatile 变了是做什么的

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

9 什么是 ThreadLocal 变量

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

  使用:

1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。

 

2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)。

 

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

12 synchronized 关键词是做什么的

posted @ 2018-08-13 15:41  欧之衍  阅读(150)  评论(0编辑  收藏  举报