一:线程和进程的联系和区别是什么?
联系:进程是一个执行中的程序,是操作系统对其资源(内存和CPU时间等)进行分配的基本单位,每一个进程都有独立的一块内存空间、一组系统资源,其内部数据任务和状态都是完全独立的;多线程就是一个进程中可以同时运行多个不同的线程,执行不同的任务。
***区别:***同类的多个线程共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据以及一个供程序执行时使用的堆栈。
什么是前台线程,什么是后台线程?
***前台线程:***在主线程运行结束后,若前台线程没有运行完则会阻止主线程的关闭。
***后台线程:***在主线程运行结束后,整个线程会结束。
创建线程有几种方法?他们之间的区别是什么?
创建线程有两种方法:一种是通过继承Thread类重写Run方法创建。另外一种是实现Runnable接口的方法。
区别就是,继承Thread类就无法继承别的类,而实现Runnable接口就可以继承别的类,而且用这种方法多个线程可共享实现类对象的资源。
线程的生命周期有哪些状态?哪些方法可以改变这些状态?
五种状态:创建状态、就绪状态、运行中状态、阻塞状态和死亡状态。
new运算符创建线程;start方法启动线程;join、sleep、wait方法使正在执行的线程进入阻塞状态;线程到达其run方法末尾或者抛出未捕获到的Exception或Error。
什么是线程安全?为什么会产生线程安全问题?如何解决线程安全问题?
线程安全就是就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。
线程安全问题出现的根本原因是 1.存在两个或者两个以上的线程对象共享同一个资源;2多线程操作共享资源代码有多个语句。
解决:同步代码块,用synchronized关键字
什么是线程的同步通信?同步通信又是如何实现的
为了保证线程的安全,使线程在执行时不被其他线程打断从而确保了共享资源的安全性。Synchronized关键字可以实现同步通信。
什么是死锁?
多个线程都处于等待状态,彼此需要对方占用的监视器所有权,就构成死锁。