1、进程和线程的区别
进程:进程是程序的一次运行,是系统执行程序的基本单位,系统执行程序是指进程从创建,运行到消亡的过程
线程 :一个进程在运行的时候可以产生多个线程,进程可以产生多个同类的线程,共享进程的堆和方法区自营,线程有自己的程序计数器,虚拟机栈和本地方法栈,所以线程是轻量级别的进程
2、并发和并行的区别
并发: 是指两个及两个以上的作业在同一时间段内执行
并行 :是指两个及两个以上的作业在同一时刻执行
3、同步和异步的区别
同步:发出一个调用的时候,在没有得到结果的时候,该调用就不能返回,一直在等待
异步:发出调用后,不用等待返回结果,该调用可以直接返回
4、为什么使用线程
线程还可能带来的 问题是死锁,内存泄漏,线程不安全
线程池的作用:
1、降低资源消耗,可以重复利用已经创建的线程,降低重复创建和销毁线程造成的消耗
2、提升 响应速度: 当任务过来的时候,不用等待线程进行创建
3、提升管理 :可以对线程进行统一的分配,调优和监控
5、线程的生命周期和状态
1、NEW :初始化状态
2、RUNABLE :运行状态
3、WAITING :等待状态
4、BLOCK :阻塞状态
5、TIME-WAITING :超时等待状态
6、Terminate :终止状态
6、如何避免程序死锁
什么是死锁:多个线程被阻塞,它们中多个或全部在等待某个资源的释放,由于线程被无限期阻塞,因此程序不可能正常终止
7、sleep() 和wait() 的区别
两者都可以阻塞线程的执行
区别:
1、sleep()没有释放锁,而wait() 会释放锁
2、wait() 用于线程之间的通信,而sleep() 用于线程的暂停
3、 sleep 执行完之后,线程会自动唤醒,而wait()需要调用notify 来进行唤醒