对于一个多线程程序写得怎么样,java程序员们的评价不仅停留在好坏之间,而且有更专业、更详细的评价标准。在前面的文章中,我学习了多线程序评价标准,以测试每个人的学习结果,这里已经整理出来了多线程序评价标准自测问题,你可以测试你是否真的理解以前学习的评价标准。
第一,评估以下叙述内容是否合适?
1、synchronized总是添加到方法中,是不是万无一失?
答:安全:加上synchronized方法不会降低安全性,但安全性可能不会提高。例如,如果保护字段应设置为public,无论方法中添加多少synchronized,该程序仍然缺乏安全性。
生存:一概加一般来说,synchronized的生存率会下降。例如,很容易导致死锁(dead lock)的发生。
性能:不必要,但加上如果synchronized,性能(如throughput)会下降。这是因为一般来说, synchronized 与非synchronized方法相比,调用该方法需要更多的时间。
2、synchronized方法不是变成了无限循环吗?这样的程序不好吗?
答:安全:安全:即使synchronized方法成为无限循环,只要循环中的处理正确,就不会危及其安全性。
生存性:如果synchronized方法成为一个无限循环,其他想要执行synchronized方法的线程将被锁定,导致生存率下降。
性能:如果生存率下降,性能(如throughput)也会下降。
3、即使启动100,也会因为程序错误而陷入无限循环的线程 第一,因为线程只是不断执行,应该没关系。
答:安全:即使有很多线程只是循环,也不会导致安全性下降。
生存:如果只有大量的循环线程,就不会导致生存下降,但是,如果线程中使用的内存超过了系统所能提供的内存,一些重要的线程可能无法启动,因此生存率会下降。
性能:执行线程时会使用内存,然后消耗CPU时间 resource, 因此,性能会下降。
4、这个服务器一次只能连接一个客户端,请更好地调整此服务器。
答:性能:从这个问题来看,这似乎意味着一个好的服务器可以同时连接几个客户端。所以问题是服务器“负荷量”。
5、这个搜索程序已经够糟糕了。一旦启动,必须等到所有搜索完成后才能取消。。
答:性能:这个问题与程序有关“响应能力”有关。
6、这样的话,类A和B必须注意线程共享和互斥的影响,这不是很好吗?
答:重复使用:问题在于类别“重复使用性” 提问者可能担心程序代码必须考虑类A和类B之间的线程共享和相互排斥。只要在某一方的类中关闭要启动的线程的相关程序代码,就可以减少类的影响,提高该部件的可重复使用性。
二、若线程数量变成2倍,throughput会变成2倍吗?
答:一般来说,它不会变成两倍 可能的原因如下3点:
理由1:有时由于硬件的限制,不一定是两倍的线程可以同时执行(并行操作)。此外,在这种情况下,线程切换的overhead也很容易发生。
理由2:处理的工作可能无法平均分配到所有线程。
理由3:即使没有硬件控制,两倍的线程同时执行,也会发生线程间共享互斥的overhead,这也是原因之一。
以上是本文整理的。多线程序评价标准自测题,通过以上题目可以知道自己的掌握程度,相信大家java零基础在学习了评价标准后,朋友们可以完成上述标准多线程序评价标准自测问题的。