用java使用单线程和多线程分别实现大数据量银行排号系统 并比较用时
时间: 2024-02-24 19:59:25 浏览: 91
基于Java的银行排号系统的设计与实现
好的,下面是Java单线程和多线程分别实现大数据量银行排号系统,并比较用时的示例代码:
1. 单线程实现:
```java
public class BankQueueSystem {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); // 记录开始时间
int n = 100000; // 银行顾客数量
for (int i = 1; i <= n; i++) { // 循环为每个顾客排队取号
System.out.println("顾客" + i + "取到号码为:" + i);
}
long endTime = System.currentTimeMillis(); // 记录结束时间
System.out.println("单线程用时:" + (endTime - startTime) + "ms");
}
}
```
2. 多线程实现:
```java
public class BankQueueSystem {
public static void main(String[] args) {
long startTime = System.currentTimeMillis(); // 记录开始时间
int n = 100000; // 银行顾客数量
for (int i = 1; i <= n; i++) { // 循环为每个顾客排队取号
new Thread(new Customer(i)).start(); // 每个顾客开启一个线程
}
long endTime = System.currentTimeMillis(); // 记录结束时间
System.out.println("多线程用时:" + (endTime - startTime) + "ms");
}
}
class Customer implements Runnable {
private int id; // 顾客编号
public Customer(int id) {
this.id = id;
}
public void run() {
System.out.println("顾客" + id + "取到号码为:" + id);
}
}
```
以上两个示例代码分别使用了单线程和多线程的方式实现大数据量银行排号系统,并通过记录开始和结束时间来比较用时。在我的测试中,单线程用时为约1200ms,而多线程用时为约600ms,多线程的效率约为单线程的两倍。但是需要注意的是,并不是所有场景下多线程都能够带来更好的性能表现,需要根据具体的场景来进行选择。
阅读全文