java学生请假管理系统的多线程主要代码及运行结果图
时间: 2024-12-17 10:55:00 浏览: 11
在Java中创建一个学生请假管理系统涉及到多线程主要是为了处理并发情况,比如同时有多个学生提交请假申请或查询请假记录。下面是一个简单的示例,假设我们有一个`LeaveManager`类,它包含一个用于添加请假申请的方法,并用两个线程分别代表两个用户进行操作:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class LeaveRequest {
private String studentId;
// 其他请假信息...
public void submit() {
System.out.printf("User %s submitted a leave request.\n", studentId);
}
}
public class LeaveManager {
private ExecutorService executor;
public LeaveManager() {
executor = Executors.newFixedThreadPool(2); // 创建固定大小的线程池
}
public void addLeaveRequest(String studentId) {
LeaveRequest request = new LeaveRequest();
request.studentId = studentId;
executor.submit(request::submit); // 使用lambda表达式异步提交
}
public void shutdown() {
executor.shutdown();
}
}
// 主函数
public static void main(String[] args) {
LeaveManager manager = new LeaveManager();
// 用户A提交请假请求
manager.addLeaveRequest("A001");
// 用户B提交请假请求
manager.addLeaveRequest("B002");
// 等待所有任务完成
try {
manager.shutdown();
manager.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
```
在这个例子中,`addLeaveRequest`方法接受学生的ID并创建一个新的`LeaveRequest`对象,然后将提交请求的任务提交到线程池。运行时会看到类似这样的输出:
```
User A001 submitted a leave request.
User B002 submitted a leave request.
```
由于是并发执行,实际结果显示可能会交错,但主线程会在所有任务完成后关闭线程池。
阅读全文