java - 线程饥饿

标签 java multithreading

如果我有一个大数组(400000 个元素),一个具有最高优先级的线程和一个同步读取方法 如果这个线程访问它并且长时间不将对象释放给其他低优先级的线程,我们可以说是 STARVATION 吗??

或者饥饿是一个只涉及线程无限期推迟释放其对象锁的情况的术语?

最佳答案

饥饿是指 Java 运行时 (JVM) 没有为线程分配时间来执行。这可能是由于糟糕的调度算法(如 Solaris 下的绿色线程,其中从 1 到 100 万的 for 循环做一些 CPU 密集型的事情不会在 Solaris 下产生 CPU 但在 Windows 下会产生),糟糕的编程实践(不从返回) applet 中的 paint() 方法)或恶意攻击(例如使用 CPU 在 Java 进程之外忙碌的拒绝服务攻击攻击主机)。

引用链接:http://www.jguru.com/faq/view.jsp?EID=47379

关于java - 线程饥饿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412462/

相关文章:

java - 使用curl将文件上传到Box API

java - 为什么这不能编译?无法为匿名类的 String 成员分配新值

python multiprocessing - 将子进程日志记录发送到在父进程中运行的 GUI

c++ - 在 Win32/MFC 中停止线程

multithreading - 这个 Ruby 代码会在 Puma 下使用非阻塞 I/O 吗?

java - Spring每次服务调用后刷新缓存

java - Scala 和 Java 的构建器库

java - addToBackStack() 如何工作?

java - Java Concurrency In Practice 中的 CountDownLatch 示例

android - 在 android 中进行 http 调用的最佳做法是什么