gpt4 book ai didi

java - 多线程未按预期工作,第二个线程正在等待第一个线程完成后再开始

转载 作者:行者123 更新时间:2023-12-02 03:02:49 25 4
gpt4 key购买 nike

然后我会简单地理解:我想要的是我的两个线程同时启动,而不是一个线程在启动之前等待另一个线程完成它必须做的事情。代码如下:

public class MyClass extends Activity{
MediaPlayer player;
int timeToPause;

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);

final Runnable updateLyrics = new Runnable() {
@Override
public void run() {
while(player.isPlaying()){
if(inside(player.getCurrentPosition(), lyricsBegin[index], lyricsEnd[index])){
updateLyrics(lyrics[index]);
}
}
}
};
Runnable pausePlayer = new Runnable() {
@Override
public void run() {
while(player.isPlaying()){
if(player.getCurrentPosition()/1000 == timeToPause){
player.pause();
}
}
}
};
Thread threadUpdate = new Thread(updateLyrics);
Thread threadPause = new Thread(pausePlayer);
threadUpdate.start();
threadPause.start();
}
}

函数inside(int current, int begin, int end)检查player的当前位置是否介于 begin 之间和 end , timeToPauseplayer的具体时间应该暂停

最佳答案

你不能。实际线程取决于操作系统调度程序。

你能做的就是等待两者的状态都变为RUNNABLE。之后,您可以使用同步标志让它们疯狂运行。原子变量或 volatile 应该可以解决问题

关于java - 多线程未按预期工作,第二个线程正在等待第一个线程完成后再开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42189985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com