我会简单地理解: 我想要的是我的两个线程同时启动而不是等待另一个完成它在开始之前必须做的事情。这是代码:
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
之间,timeToPause
是player
的特定时间{1}}暂停
答案 0 :(得分:2)
你做不到。实际线程依赖于OS调度程序。
你可以做的是等待两者的状态都是RUNNABLE。之后,您可以使用同步标志让它们运行。原子变量或volatile应该可以解决问题