java第九章课后习题

1.线程的联系和区别

一个进程中可以同时运行多个进程

一个进程就是一个执行中的程序,而每一个进程都有自己独立的一块内存空间、一组系统资源,每一个进程的内部数据和状态都是完全独立的。
 Java程序执行中的单个顺序的流控制称为线程,多线程则指一个进程中可以同时运行多个不同的线程,执行不同的任务。
线程与进程的区别:同类的多个线程共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以系统在产生一个线程,或者在各个线程之间切换时,负担要比进程小的多
 
2.什么是前台线程?什么是后台线程?
参考这篇:https://www.cnblogs.com/w6w6/p/10648410.html
写的很可爱
前台线程:“既然我上台了,我一定要表演完,不然我跟你没完!
后台线程:“既然我没上台,我受制于应用程序,它关了我就自动关了(舞台都关了,我在后台再干活就没意思了)!
总述:前台线程和后台线程唯一区别就是:应用程序必须运行完所有的前台线程才可以退出;
而对于后台线程,应用程序则可以不考虑其是否已经运行完毕而直接退出,
所有的后台线程在应用程序退出时都会自动结束。
 
3.创建线程有几种方法?他们之间的区别是什么?
方式一:直接继承线程Thread类。该方法编写简单,可以直接操作线程,由于已经继承了Thread,不能再继承其他类了;
        public MyThread extends Thread{
             ……
             public void run() {  线程体逻辑 }  
        }
方式二:实现Runnable接口。当一个类已继承了另一个类时,就只能用实现Runnable接口的方式来创建线程;另外,使用此方法的更多原因是多个线程共享某个对象的资源。
        public MyThread implements Runnable {
             ……
             public void run() {  线程体逻辑 }   
        }
4.线程的生命周期有哪些状态?哪些方法可以改变这些状态?
  • 创建状态:线程对象已经创建,还没有在其上调用start()方法。
  • 可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。
  • 运行状态:线程调度程序从可运行池中选择一个线程作为当前线程时线程所处的状态。这也是线程进入运行状态的唯一一种方式。
  • 阻塞状态:这是线程有资格运行时它所处的状态。如执行了join/sleep/wait方法,会让出CPU,只有当引起阻塞的原因消除时,线程才能转入就绪状态。
  • 死亡态:当线程的run()方法完成时就认为它死去。或者抛出一个未捕获到的Exception或Error。
 
5.什么是线程安全?为什么会产生线程安全问题?如何解决线程安全问题?
线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。
原因是由于不同线程获取到资源时进行运算,但未来得及写入时,线程改变,则另外线程读入的资源就是错误,导致所有线程写入读入不同步。
解决办法
使用监视器,使用关键字synchronized监视同步代码块,当一个线程获得监视权限时,别的线程就无法获得,保证每时每刻只有一个线程调用某一方法
 
6.什么是线程的同步通信?同步通信又是如何实现的?
线程同步通信是希望实现两个或多个线程之间的某种制约关系
实现:首先是用监视器synchronized来保证每次只有一个线程调用方法,其次引入一个boolean型标志来判断该线程是否执行或wait,两个线程时使用notify(),多个线程时用notifyAll()来让出监视器并唤醒其他线程。这样就实现了线程之间的关系。
 
7.什么是死锁?
线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都不主动释放所占有的资源,将产生死锁
posted @ 2019-11-17 21:20  Liiiiiiiiiiinnnnnnnn  阅读(212)  评论(0编辑  收藏  举报