java每隔一秒执行一次
时间: 2023-11-10 11:56:04 浏览: 289
Java中可以使用Thread类和Runnable接口来创建线程。在给定的代码中,创建了两个线程T1和T2,分别输出"hello, world"和"hi"。每个线程在循环中通过Thread.sleep()方法使线程休眠1秒钟,并打印相应的消息。T1线程循环10次,T2线程循环5次,然后退出。
另外,引用中提到了yield()方法,它可以让当前线程让出CPU,让其他线程执行。在给定的代码中,主线程在执行输出"hi"的循环时,通过Thread.yield()方法让出CPU,让子线程先执行。然后主线程继续执行输出。
还有一个相关的主题是守护线程和用户线程。在Java中,线程可以分为两种类型:守护线程和用户线程。守护线程是为其他线程提供服务的线程,当所有的用户线程结束时,守护线程也会随之退出。用户线程和守护线程的区别在于它们对程序的影响和当程序退出时的行为。
相关问题
创建2个线程一个每隔一秒打印一次hello一个线程每隔一秒打印一次word
创建两个线程,一个打印"hello",另一个打印"word",你可以使用Java的`Thread`类和`synchronized`关键字来实现同步,避免它们同时打印。这里是一个简单的示例:
```java
class PrintHello implements Runnable {
private int count = 0;
@Override
public void run() {
while (true) {
synchronized (this) { // 使用当前对象作为锁
if (count % 2 == 0) { // 每隔两秒打印一次
System.out.println("Hello");
}
try {
wait(1000); // 等待1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
}
}
}
}
class PrintWord extends PrintHello {
@Override
public void run() {
super.run(); // 调用父类run方法
while (true) {
synchronized (this) { // 使用当前对象作为锁
if (count % 2 != 0) { // 每隔一秒打印一次word
System.out.println("Word");
}
try {
wait(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
count++;
}
}
}
}
public class Main {
public static void main(String[] args) {
Thread helloThread = new Thread(new PrintHello());
Thread wordThread = new Thread(new PrintWord());
helloThread.start();
wordThread.start();
// 程序会阻塞在这里直到所有线程结束
// 如果你想让主线程继续运行,可以添加一个标志变量并设置它来唤醒等待的线程
}
}
```
在这个例子中,两个线程分别交替打印"hello"和"word",每秒切换一次。`synchronized`关键字用于保证在同一时刻只有一个线程能执行该部分代码。
java编写程序,要求每隔一秒获取一次当前时间
可以使用Java中的Timer类,每隔一秒执行一次获取当前时间的操作:
```java
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Date now = new Date();
System.out.println(now);
}
}, 0, 1000); // 第二个参数表示延迟时间,第三个参数表示间隔时间
```
这样就可以每隔一秒打印一次当前时间了。
阅读全文