操作系统有理解线程可以如何使用的特性的优点吗?例如,如果创建一个新线程以表明它将用于密集型CPU计算,并且将阻塞I/O,那么Java中是否有一种方法。如果这是一种能力,线程调度不会改进吗?操作系统是否具有理解线程可以如何使用的特性的优点?
2
A
回答
3
我不确定你实际上期望操作系统如何处理线程是I/O或计算的信息。实际上线程如何调度的最重要的事情(即线程优先级和线程CPU关联度)已经被API公开(并且支持NUMA方面也开始出现在主流OS API中)。
如果用“计算线程”表示它是做后台处理的东西,比GUI线程不重要(从维护应用程序响应的角度来看),可能最有用的做法是降低计算一些线程。
3
这就是操作系统进程的功能。操作系统具有复杂的进程调度。操作系统跟踪I/O使用情况和CPU使用情况,并动态调整优先级,以便CPU密集型处理不会干扰I/O。
如果您需要这些功能,请使用适当的OS进程。
1
这是必要的吗?在I/O上阻塞的线程将导致CPU密集型线程运行。操作系统决定如何安排线程。 AFAIK没有办法给Java提供任何提示。
1
是的,如果您是喜欢打开大量线程(特别是在Windows上)的架构师,请务必特别了解它们。
Jeff Richter在Wintellect有一个名为PowerThreading的库。如果您在.NET上开发应用程序,这非常有用,但是因为您正在谈论JAVA,所以理解OS线程,内核模型以及中断的工作方式会更好。
相关问题
- 1. 是否有可能使用操作系统线程创建自己的线程?
- 2. 是否可以制作使用VB.NET的操作系统?
- 3. 是否有任何操作系统不支持线程?
- 4. 是否有可能使用java制作操作系统?
- 5. 是否可以使用Python创建操作系统?
- 6. 是否可以使用Cosmos开发移动操作系统?
- 7. 使用Qt时,我是否必须在特定的操作系统上编译特定的操作系统?
- 8. 是否可以使用Java获取远程主机的操作系统类型?
- 9. i7处理器与Windows8操作系统的多线程问题操作系统
- 10. 是否可以使用NMAP来查找使用MAC地址的操作系统
- 11. libumem是否仅在Solaris操作系统或其他操作系统中可用?
- 12. 在不同的操作系统上定义十进制数,如何理解C#是否使用点或逗号
- 13. forkIO线程和操作系统线程
- 14. Linux操作系统:系统()+ SIGCHLD处理多线程+
- 15. 是java的多线程对操作系统可见
- 16. 操作系统线程调度程序是否被JVM覆盖?
- 17. 是否可以检测Haxe中的当前操作系统?
- 18. 我可以依赖该操作系统调度线程“最优”(并行化)
- 19. 实时操作系统可以处理的进程数量
- 20. 是否有处理操作系统日期的lib(跨平台)?
- 21. 是否有宏检测操作系统...?
- 22. Android是否有“主机”操作系统?
- 23. 是否有使用Lisp开发的操作系统?
- 24. 如何是操作系统
- 25. 创建线程时JVM如何使用操作系统?
- 26. 是否可以使用Tokenizer来统计操作码的数量?
- 27. 是否可以创建一个可以运行所有应用程序的操作系统?
- 28. 是具有唯一的登录系统,可以2点
- 29. Numpy:具有特定条件的线性系统。没有负面解决方案
- 30. 求解的线性系统具有LAPACK的dgeqrf_
应用程序对操作系统线程调度程序具有进一步“影响”的能力感觉像是一个好主意。也许问题是如果这种能力存在,那么应用程序想要利用的线程优先级以外的特性是什么? – McGovernTheory 2009-04-17 13:12:21