java后端构建2个线程,线程1只取号码末尾数 in ('0','1','2','3','4'),线程2只取号码末尾数 in ('5','6','7','8','9');线程每次只取100条数据,遍历发送,100条遍历后休息5秒再次遍历,也就是while死循环,
时间: 2023-08-06 10:14:32 浏览: 43
好的,那我来给你提供一个简单的 Java 代码实现:
```java
public class NumberThread implements Runnable {
private String name;
private int startNum;
private boolean isRunning = true;
private static final int PAGE_SIZE = 100;
public NumberThread(String name, int startNum) {
this.name = name;
this.startNum = startNum;
}
@Override
public void run() {
System.out.println(name + " is running...");
while (isRunning) {
List<String> numbers = getNumbers(startNum);
if (numbers.isEmpty()) {
// 如果没有获取到号码,则休息5秒
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
continue;
}
for (String number : numbers) {
sendMessage(number);
}
}
}
private List<String> getNumbers(int lastDigit) {
List<String> numbers = new ArrayList<>();
// TODO: 连接数据库或者其他数据源,查询末尾数字为 lastDigit 的号码,并将结果存入 numbers
return numbers;
}
private void sendMessage(String number) {
// TODO: 发送消息给号码为 number 的用户
System.out.println("Sending message to " + number + " from " + name);
}
public void stop() {
isRunning = false;
}
}
```
上述代码实现了一个 `NumberThread` 类,该类实现了 `Runnable` 接口,可以作为一个线程运行。在该类中,我们定义了一个 `getNumbers` 方法,用于从数据库或其他数据源中查询末尾数字为 `lastDigit` 的号码,并将结果存入 `numbers` 集合中。在 `run` 方法中,我们不断地循环调用 `getNumbers` 方法,并将获取到的号码发送出去。如果没有获取到号码,则休息5秒后继续查询。在发送完100条消息后,线程会自动休息5秒再次遍历。
你可以创建两个 `NumberThread` 对象,分别传入不同的末尾数字,然后启动这两个线程。需要注意的是,在关闭程序时,需要调用 `stop` 方法来停止线程的运行。