public void run() {5
while (!Thread.interrupted()&&!terminated) {6
// 执行监控操作7
System.out.println("监控线程正在执行监控操作...");8
try {9
Thread.sleep(1000);10
} catch (InterruptedException e) {11
System.out.println("监控线程被中断,准备退出...");12
Thread.currentThread().interrupt();13
e.printStackTrace();14
}15
}16
// 执行清理操作17
System.out.println("监控线程正在执行清理操作...");18
releaseResources();19
}20
21
public void terminate() {22
//设置标志变量为true,并等待一段时间23
terminated = true;24
try {25
join(5000); // 等待5秒钟,期间监控线程会检查terminated的状态26
} catch (InterruptedException e) {27
e.printStackTrace();28
}29
}30
31
private void releaseResources() {32
// 释放资源和进行必要的清理工作33
System.out.println("监控线程正在释放资源和进行必要的清理工作...");34
}35
36
public static void main(String[] args) throws InterruptedException {37
MonitorThread2 thread = new MonitorThread2();38
//启动监控线程39
thread.start();40
//主线程休眠期间,监控线程在执行监控操作41
Thread.sleep(10000);42
//为监控线程设置中断标志位43
thread.interrupt();44