微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在运行java程序中改变线程优先级?

我正在64核心机器上运行一个大型的multithreadingJava作业。 该程序已经运行了几天,我想改变一些由java(而不是主线程)创build的线程的优先级,但不取消和重新启动程序,因为这将是一个大量的浪费时间和计算资源。

有没有办法在运行时改变线程优先级,从操作系统(Linux) ? 我知道在renice命令可以renice整个过程,但我正在寻找一种方法来改变创build的线程在运行时的优先级(这似乎不会发生只有renice)。

使用xterm和java

在启动时启动java进程,死机时自动重启

在Windows中:从C程序中获取无缓冲的stdout到Java程序InputStream

Windows上的Java串行通信

OSX中是否有src.jar?

这取决于你的Java和Linux版本,但你可以这样做:

进行应用程序的线程转储。 首先找到进程ID,然后jstack进行线程转储。

转储将包含nid s:

"GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f322001f800 nid=0x6bd3 runnable

这是十六进制线程的PID。 您可以使用printf将其转换为十进制:

printf "%dn" 0x6bd3

这给了我们27603。

你现在可以用这个PID来改变线程的优先级。

资料来源:

如何用ps -axl找到在Linux上运行的Java线程?

什么是Java线程优先? (在Java的线程中设置优先级 )

http://linux.die.net/man/1/chrt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐