Sleep需要捕获或者抛出异常,但是run方法不能抛出异常throws,所以在run方法中只能捕获异常(try catch)
不是,如果我要用一个标记位来终止线程,但是又不能传参怎么办?好像只能设置全局变量。如果要在main方法中用lambda表达式,则需要将所有属性和方法都设置static
//倒计时
static Date date = new Date(currentTimeMillis() + 1000 * 10);
static DateFormat dateFormat = new SimpleDateFormat("hh:ss");
static boolean flag = true;
public static void main(String[] args) throws InterruptedException {
new Thread(()->{
int i = 1;
while(flag){
terminal();
System.out.println(dateFormat.format(date.getTime() - 1000 * i++));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
public static void terminal(){
if(date.getTime() - currentTimeMillis() <= 0){
flag = false;
}
}