我试图制作一个时钟,如果
如何同时运行警告语音和时钟,使时钟在播放警告语音()时不会停止?
语音代码:
private void warningVoice() {
System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory");
vm = VoiceManager.getInstance();
voice = vm.getVoice(SayWhat);
voice.setStyle("robotic");
voice.setVolume(200);
voice.allocate();
String writing;
writing = "You Have" + lblMinute.getText() + "Minutes Left";
try {
voice.speak(writing);
}
catch (Exception ex) {
}
}
时钟代码:
private void showTime() {
timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
second--;
second_format = String.format("%02d", second);
minute_format = String.format("%02d", minute);
lblSecond.setText(String.valueOf(second_format));
if (second == -1) {
second = 59;
minute--;
second_format = String.format("%02d", second);
minute_format = String.format("%02d", minute);
lblSecond.setText(String.valueOf(second_format));
lblMinute.setText(String.valueOf(minute_format));
/*This is the problem line*/
if (minute <= 10) {
warningVoice();
}
if (minute == 0) {
timer.stop();
second = 60;
minute = 25;
}
}
}
});
timer.start();
}
您应该研究util Timer类和timertask,然后可以通过以下方式大大简化代码:
private void warningVoice(long millisLeft) {
//obviously replace this with your voice code
System.out.println("You have " + TimeUnit.MILLISECONDS.toMinutes(millisLeft) + " minutes left");
}
public static void main(String[] args) throws Exception {
Timer timer = new Timer();
long taskTimeInMillis = TimeUnit.MINUTES.toMillis(25);
final long warningTimeInMillis = TimeUnit.MINUTES.toMillis(10);
long sendWarning = taskTimeInMillis - warningTimeInMillis;
TimerTask warningTask = new TimerTask() {
public void run() {
warningVoice(warningTimeInMillis);
}
};
timer.schedule(warningTask, sendWarning);
}
问题内容: 因此,我的目标是让函数启动自己的线程,以便可以并行运行,而不必等待上一个线程完成。问题在于,它似乎不是多线程的(意味着一个线程在另一个线程开始之前就完成了)。 我也有该函数的内部,但似乎启动的线程的标识与从其运行python脚本的主线程相同。我认为我的方法不正确。 问题答案: 这是常见错误,容易出错。 只需在主线程中一次执行您的函数,然后将(我想为您函数的返回值)作为函数传递给线程,这
我写了一个启动两个线程的代码片段;一个线程打印所有奇数,而另一个线程打印所有偶数。我使用了内在锁和线程通信命令的组合来实现两个线程的正确交叉。这是我的代码, 以下是我的问题: > 奇数线程在printOdd()函数中执行,而偶数线程在print偶数()函数中执行。我对两个线程都使用一个内在锁;我不明白两个线程怎么能同时存在于各自的同步块中,因为使用了相同的锁。 我从代码中删除了线程通信语句(通知,
下面是
本文向大家介绍Java实现的两个线程同时运行案例,包括了Java实现的两个线程同时运行案例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java实现的两个线程同时运行。分享给大家供大家参考,具体如下: 运行结果: 更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作
我有一个情况,我需要启动两个线程一个接一个。我尝试了以下代码片段,在这里我可以启动Thread12,但不能启动Thread2。我怎样才能开始两个......?如何启动两个线程一个接一个...? 代码片段
问题内容: 我已经研究了很多关于Java线程的教程,但是找不到答案。 我的问题是:如何同时运行两个独立的线程? 我的情况是:我有两个任务; 保存一些数据到数据库 在移动设备上发送推送通知。 由于这两个任务是独立的,因此我想同时执行它们。 我尝试使用具有两个线程的线程池,但是问题是数据库任务很快完成,但是发送推送通知需要一些时间。 因此,当一个任务完成而另一个任务仍未完成时,它将引发异常。 我的代码