大家好,我有这样的代码。我想要延迟几秒钟并显示“正在扫描…”
以下是我的代码。虽然它可以编译但没有任何延迟。
int i = 1;
if (i == 1) {
try {
Thread.sleep(1);
} catch (InterruptedException ie) {
System.out.println("Scanning...");
}
}
大家好,我有这样的代码。我想要延迟几秒钟并显示“正在扫描…”
以下是我的代码。虽然它可以编译但没有任何延迟。
int i = 1;
if (i == 1) {
try {
Thread.sleep(1);
} catch (InterruptedException ie) {
System.out.println("Scanning...");
}
}
java.util.concurrent.TimeUnit
:TimeUnit.SECONDS.sleep(1);
睡眠一秒钟或十分钟
TimeUnit.MINUTES.sleep(10);
或者线程休眠
try
{
Thread.sleep(1000);
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
请参阅官方文档
TimeUnit.SECONDS.sleep()
将调用Thread.sleep
。唯一的区别在于可读性和使用TimeUnit对于非明显时间间隔可能更易于理解。
但如果您想解决问题
int timeToWait = 10; //second
System.out.print("Scanning")
try {
for (int i=0; i<timeToWait ; i++) {
Thread.sleep(1000);
System.out.print(".")
}
} catch (InterruptedException ie)
{
Thread.currentThread().interrupt();
}
Thread.sleep()
接受的参数是毫秒数,而不是秒数。
睡眠一毫秒是无法察觉的。尝试使用 Thread.sleep(1000)
来睡眠一秒钟。
Java:
计算时间我们使用以下方法:
import java.text.SimpleDateFormat;
import java.util.Calendar;
public static String getCurrentTime() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(cal.getTime());
}
第二点:
import java.util.concurrent.TimeUnit;
System.out.println("Start delay of 10 seconds, Time is: " + getCurrentTime());
TimeUnit.SECONDS.sleep(10);
System.out.println("And delay of 10 seconds, Time is: " + getCurrentTime());
输出:
开始延迟10秒,时间为:14:19:08
再延迟10秒,时间为:14:19:18
分钟:
import java.util.concurrent.TimeUnit;
System.out.println("Start delay of 1 Minute, Time is: " + getCurrentTime());
TimeUnit.MINUTES.sleep(1);
System.out.println("And delay of 1 Minute, Time is: " + getCurrentTime());
输出:
启动延迟1分钟,时间为:14:21:20
再延迟1分钟,时间为:14:22:20
毫秒:
import java.util.concurrent.TimeUnit;
System.out.println("Start delay of 2000 milliseconds, Time is: " +getCurrentTime());
TimeUnit.MILLISECONDS.sleep(2000);
System.out.println("And delay of 2000 milliseconds, Time is: " + getCurrentTime());
输出:
开始延迟2000毫秒,时间为: 14:23:44
然后延迟2000毫秒,时间为: 14:23:46
或者:
Thread.sleep(1000); //milliseconds
这是鼠标事件(mouseEvent)中的内容。
如果这是在Swing GUI中,则要删除所有调用Thread.sleep(...)
的语句,因为这样做会使整个GUI陷入睡眠,导致无法使用。相反,使用Swing Timer来产生GUI中的任何延迟,同时仍然允许其更新其图形。
除了调试时,您还需要避免使用System.out.println(...)
调用,并在GUI本身中显示用户通知,例如在状态JLabel或消息对话框中。
你在catch块中有System.out.println("Scanning...")
语句。你想把它放到try块中吗?
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if (getActivity() != null)
getActivity().runOnUiThread(() -> tvCovidAlert.startAnimation(animBounce));
}
}, DELAY_TIME_MILI_SECONDS);
Thread.sleep(t);
where t => time in millisecons to sleep
Thread.sleep(1000);
.sleep
是毫秒,而不是秒),并且您在 catch
语句中尝试打印。您的代码应该看起来更像:if (i==1) {
try {
System.out.println("Scanning...");
Thread.sleep(1000); // 1 second
} catch (InterruptedException ex) {
// handle error
}
}
你需要使用Thread.sleep()
方法。
这个方法用于暂停当前线程的执行,时间以毫秒为单位指定。毫秒的参数值不能为负数,否则会抛出IllegalArgumentException异常。
FYI(摘自这里)
Java Thread Sleep重要点:
Thread.sleep(2000); //2000代表2秒
。