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内存,线程开的越多,消耗的内存也就越大,最后死机)。