【发布时间】:2020-01-11 05:36:31
【问题描述】:
是否有线程安全的方式来读取 JavaFX MediaPlayer 的属性(例如 CurrentTime)?
要播放/更改媒体,我通常使用Platform.runLater,但我需要立即返回CurrentTime。
myplayer.getCurrentTime() 安全吗?或者如果player 被另一个线程处理掉,我会遇到麻烦吗?
示例:
private MediaPlayer player;
public void playMe(){
Platform.runLater(
new Runnable() {
@Override
public void run() {
player = new MediaPlayer(media);
player.play();
}});
}
public void deleteMe(){
Platform.runLater(
new Runnable() {
@Override
public void run() {
if (player != null) player.dispose();
player = null;
}});
}
public Double getCurrentTime(){
if (player != null) return player.getCurrentTime().toSeconds(); // thread issues???
else return null;
}
【问题讨论】:
-
您的代码不完整。请阅读上面的链接。
-
您的链接不相关 - 我不想重现问题。
-
您的代码应该可以被复制。它还应该使用最少的代码重现您当前遇到的问题。
-
确保您确实需要这样做。在 JavaFX 应用程序线程上执行所有操作,除非您有充分的理由不这样做。这样您就不必担心并发问题,您可能会发现这些问题很难处理。
标签: javafx