Java多线程面试
1) 什么是线程?
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对 运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。
2) 线程和进程有什么区别?
线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,每个线程都拥有单独的栈内存用来存储本地数据。
3) 如何在Java中实现线程?
在语言层面有两种方式。java.lang.Thread 类的实例就是一个线程但是它需要调用java.lang.Runnable接口来执行,由于线程类本身就是调用的Runnable接口所以你可以继承 java.lang.Thread 类或者直接调用Runnable接口来重写run()方法实现线程。
4)用Runnable还是Thread?
Java不支持多继承,但是允许调用多个接口。
5)Thread类中的start()和run()方法他有什么区别?
start()是用来启动新创建的线程,而且start()内部调用了run()方法,这和直接调用run()方法效果不一样。当你调用run方法的时候,只是会在原来的线程中调用,而没有新的线程启动,start()方法才会启动新线程。
6)
- 引言:
高可用:数据不能出错
高性能:体验高
高并发:同时进行
在程序运行时,即使没有自己创建线程,后台也会存在多个线程。
main()称之为主线程,系统的入口点,用于执行整个程序;
在一个线程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器与操作系统紧密相关,先后顺序认为不能直接干预。
对于一份资源操作时,会存在资源抢夺的问题,需要加入并发控制。
线程会带来额外的开销,会存在资源抢夺的问题,需要加入并发控制
每个线程在自己的工作内存交互,加载和存储主内存监控不当会造成数据不一致
- 多线程实现
多实现,少继承
创建多线程:
- 继承Thread类
- 实现Runnable接口
- 实现Callable接口