定义实现Runable接口的类 改写类的run方法,要求每50毫秒打印一次线程名 在main中3次实例化这个类,并调用
时间: 2024-10-07 19:06:16 浏览: 35
Runable接口-J2SE高级编程
在Java中,如果你想要定义一个实现了`Runnable`接口的类,并且重写了它的`run()`方法以便每50毫秒打印一次线程名,你可以这样做:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
// 定义一个实现了Runnable接口的类
class PrintThreadName implements Runnable {
private String threadName; // 线程名称
public PrintThreadName(String name) {
this.threadName = name;
}
@Override
public void run() {
while (true) {
System.out.println("当前线程名:" + threadName);
try {
Thread.sleep(50, TimeUnit.MILLISECONDS); // 每隔50毫秒暂停
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
// 创建一个自定义的线程工厂,用于设置线程名字
ThreadFactory namedThreadFactory = new ThreadFactory() {
int count = 1;
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r, "Thread-" + count++);
return t;
}
};
// 实例化并启动三个PrintThreadName对象
ExecutorService executor = Executors.newSingleThreadExecutor(namedThreadFactory);
executor.execute(new PrintThreadName("Thread 1"));
executor.execute(new PrintThreadName("Thread 2"));
executor.execute(new PrintThreadName("Thread 3"));
// 等待所有任务完成,然后关闭线程池
executor.shutdown();
try {
executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
```
在这个例子中,`PrintThreadName`类实现了`Runnable`接口,每次运行会无限循环地打印线程名称,然后休眠50毫秒。`main`方法中创建了一个线程工厂,设置了线程名称,并通过`Executors`创建了线程池来执行这些线程。
阅读全文