一、进程和线程的区别
一个进程可以拆分出多个线程,每个线程都是一个子任务。
进程是资源分配的最小单位,线程是CPU调度的最小单位
进程是抢占处理机的调度单位;线程属于某个进程,共享其资源
线程不能看做独立应用,而进程可以看做独立的应用。
进程有独立的地址空间,互相不影响,线程只是进程的不同执行路径
线程没有独立的地址空间,多进程的程序比多线程程序健壮
进程的切换比线程切换开销大
二、java中进程与线程的关系
java对操作系统提供的功能进行封装,包括进程和线程
运行一个程序会产生一个进程,进程包括至少一个线程
每个进程对应一个JVM实例,多个线程共享JVM里的堆
JAVA采用单线程编程模型,程序会自动创建主线程
主线程可以创建子线程,原则上要后于子线程完成执行
三、线程的start和run方法的区别
调用start()方法会创建一个新的子线程并启动,run()方法只是Thread的一个普通方法的调用。
四、Thread和Runable是什么关系
1、Thread是实现了Runnable接口的类,使得run支持多线程
2、因为类的单一继承原则,推荐多使用Runnablei接口
五、如何给run()方法传参
(1)构造函数传参
(2)成员变量传参
(3)回调函数传参
六、如何实现处理线程的返回值
(1)主线程等待法:缺点是自己需要实现等待逻辑,需要循环多久无法精准控制