JavaFX MediaPlayer 使用 mp4 创建数百个线程

标签 javafx javafx-2

使用以下代码时

Media media = new Media("video.mp4");
MediaPlayer mediaPlayer = new MediaPlayer(media);
MediaView mv = new MediaView(mediaPlayer);
mediaPlayer.setAutoPlay(true);
mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);

视频播放很棒。但是,在调试代码的其他一些区域时,我注意到媒体播放器似乎在疯狂地创建线程。调试器显示

Daemon Thread [Thread-X](Running)



其中 X 不断增长。看起来线程正在被破坏,但计数在一分钟内创建了超过 1000 个线程。

如果我使用相同的设置,但仅用 mp3 替换 mp4,则不会发生这种情况。

有什么想法吗?

最佳答案

好吧,这不是错误,而是默认 设计 JavaFX MediaPlayer .很遗憾,但我们需要等到开发团队决定替换当前的 GLib用于渲染视频。

基里尔·基里琴科(Kirill Kirichenko)在一个类似的问题上说 JIRA我引用:

You can observe many threads because we attach/detach native threads from native layer on each frame. This is by design now.



原因是他在另一个 JIRA 上给出的。我再次引用:

This happens due to calls AttachCurrentThread on the current JVM every time there is a frame. I can be fixed in the future when we switch to the newer GLib. Currently this is the safest way to render and not to crash jvm.

关于JavaFX MediaPlayer 使用 mp4 创建数百个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22713307/

相关文章:

JavaFX:通过调整窗口大小来调整 GridPane 的大小

java - Windows 上 JavaFX 中 SwingNode 的模糊渲染

具有多个 css .root{...} 的 javafx 元素

java - 选择哪个 ChoiceBox-Event?

java - 使用 JavaFX 打印节点

java - Hibernate 或 Java 中是否有类似于 PHP $_SESSION 的 Session 变量

java - 如何更改单元格中的文本(ControlsFX 的 SpreadsheetView)?

java - 从 JavaFX Canvas 获取像素数据的最佳方式?

css - 将 CSS 转换为 JavaFx CSS

JavaFX 停止在 WebView 中打开 URL - 改为在浏览器中打开