- 问题:线程被挂起到底占不占用CPU(也就是说如果一个线程被挂起,它还会不会占用公共资源,会不会让其他要用这个公共资源的线程被阻塞)
答:挂起一般是主动的,由系统或程序发出,不释放CPU,可能释放内存,放在外存
为什么?因为在资源不足的情况下,操作系统对在内存中的程序进行合理的安排,其中有的进程被暂时调离出内存,
当条件允许的时候,会被操作系统再次调回内存,重新进入等待被执行的状态即就绪态
什么情况下出现?当内存中的某个程序需要大的内存空间来执行,但这时内存有没有空余空间了,那么操作系统就回根据调度算法把一些进程放到外存中去,以腾出空间给正在执行的程序的数据和程序,所以引如了挂起状态
举个例子说明?你主动对雇工说:“你睡觉去吧,用着你的时候我主动去叫你,然后接着干活”。
- 问题:线程挂起和后台运行是一样的么
答:有一种线程,它是在后台运行的,它的任务是为其他的线程提供服务,这种线程被称为“后台线程(Daemon Thread)”,又称为“守护线程”或“精灵线程”。JVM的垃圾回收线程就是典型的后台线程。后台线程有个特征:如果所有的前台线程都死亡,后台线程会自动死亡。
后台运行表示线程一在占用资源,而挂起是从内存中清掉,不占用内存资源,两个是不一样的。
- 问题:计算机中的同步环境和异步环境到底是啥意思,进程的同步又是啥
答:在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;
异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
举个例子?比如:你叫我去吃饭,我听到了就立刻和你去吃饭,如果我没有听到,你就会一直叫我,直到我听见和你一起去吃饭,这个过程叫同步;
异步过程指你叫我去吃饭,然后你就去吃饭了,而不管我是否和你一起去吃饭。而我得到消息后可能立即就走,也可能过段时间再走。
如果我请你吃饭,就是同步,如果你请我吃饭就用异步,这样你比较省钱。哈哈哈。。。
什么情况下使用同步?当多个线程需要访问同一个资源时,它们需要以某种顺序来确保该资源在某一特定时刻只能被一个线程所访问,如果使用异步,程序的运行结果将不可预料。因此,在这种情况下,就必须对数据进行同步,即限制只能有一个进程访问资源,其他线程必须等待。即必须得按顺序来。
再说啥是进程的同步,在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行
举个例子?第一种情况,资源共享关系。各进程争用一台打印机,这时各进程使用这台打印机时有一定的限制。如各进程随意使用打印机,会造成打印机结果交织在一起难以区分。所以必须由系统统一分配,每次只允许一个进程使用一段时间打印机,等该进程使用完毕后再将打印机分配给其它进程。
第二种情况,相互合作关系。一个程序的输入、计算、打印三个程序段作为三个进程并发执行,由于这三个进程间存在着相互合作的关系,即先输入再计算、最后再打印的关系,所以这三个进程在并发执行时推进序列受到限制,要保证其合作关系正确,进程间这种关系称为同步关系
网友评论