线程常见问题

1.什么是线程?

线程是操作系统能够进行运算调度的最小单位

2.线程和进程有什么区别?

线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。
不同的进程使用不同的内存空间,而所有的线程共享一片相同的内存空间。别把它和栈内存搞混,
每个线程都拥有单独的栈内存用来存储本地数据。

3.Java中实现多线程有几种方法

继承Thread类;
实现Runnable接口;
实现Callable接口通过FutureTask包装器来创建Thread线程;
使用ExecutorService、Callable、Future实现有返回结果的多线程(也就是使用了ExecutorService来
管理前面的三种方式)。

4.实现Runnable接口和继承Thread类区别

实现Runnable接口比继承Thread类的优势

  • 可以解决 java 中的单继承的限制
  • 适合多个相同的程序代码的线程去处理同一个资源
  • 增加程序的健壮性,代码可以被多个线程共享,代码和数据独立

举例:
比如要卖10张票,分给3个窗口

  • 继承Thread类方式相当于,3个窗口每个都能卖10张票
  • 实现Runnable接口相当于,3个窗口一共买10张,一共10张票,分给3个窗口去卖。

![image.png](https://www.icode9.com/i/ll/?i=img_convert/eb52fd1402826cd8

上一篇:Thread和Runnable、组合和继承


下一篇:多线程的三种创建方法之实现Runnable接口