创建两个线程,其中一个线程向文件thread1.txt输出所有的水仙花数,另外一个线程向文件leapYear.txt输出1900年到2021年的所有闰年。
时间: 2024-03-21 22:39:23 浏览: 55
下面是一个实现上述需求的示例代码:
```java
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class ThreadOutput {
public static void main(String[] args) {
Thread daffodilThread = new Thread(new DaffodilTask());
Thread leapYearThread = new Thread(new LeapYearTask());
daffodilThread.start();
leapYearThread.start();
}
// 输出所有的水仙花数
private static class DaffodilTask implements Runnable {
@Override
public void run() {
try {
PrintWriter writer = new PrintWriter(new FileWriter("thread1.txt"));
for (int i = 100; i < 1000; i++) {
int a = i / 100; // 获取百位数
int b = i / 10 % 10; // 获取十位数
int c = i % 10; // 获取个位数
if (i == a * a * a + b * b * b + c * c * c) {
writer.println(i);
}
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 输出1900年到2021年的所有闰年
private static class LeapYearTask implements Runnable {
@Override
public void run() {
try {
PrintWriter writer = new PrintWriter(new FileWriter("leapYear.txt"));
for (int year = 1900; year <= 2021; year++) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
writer.println(year);
}
}
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
上述代码中,创建了两个线程DaffodilTask和LeapYearTask,分别用于输出水仙花数和闰年。在run方法中,通过循环计算符合条件的数,并将其写入到文件中。在main方法中,创建了两个线程并启动它们。
阅读全文