Thread.getstate()无法使用
时间: 2024-02-03 18:01:57 浏览: 25
如果你无法使用Thread.getState()方法,可能是因为该方法是在JDK 1.5中引入的,如果你的Java版本比1.5早的话,就无法使用该方法。
另外,Thread.getState()方法只能用于获取Java线程的状态,如果你要获取操作系统级别的线程状态,你需要使用一些操作系统相关的API。
如果你的Java版本是1.5或以上,但仍然无法使用Thread.getState()方法,可能是因为你没有正确地引入Java的线程包,你可以在代码中添加以下语句进行引入:
```
import java.lang.Thread.State;
```
如果你仍然无法解决问题,可以提供更多的代码和错误信息,以便更好地帮助你解决问题。
相关问题
while (closest_agv == nullptr && wait_time < 1) { // 最多等待 1 秒钟 // 查找可用的小车 for (auto& agv : agvs) { if (agv.getState()) { closest_agv = &agv; break; } } if (closest_agv == nullptr) { // 没有可用的小车,直接退出 return; } std::this_thread::sleep_for(std::chrono::seconds(1)); wait_time++; },改爲最多等待0.1秒
可以将代码中的 `std::chrono::seconds(1)` 改为 `std::chrono::milliseconds(100)`,这样就可以最多等待 0.1 秒钟了。修改后的代码如下:
```
while (closest_agv == nullptr && wait_time < 1) { // 最多等待 1 秒钟
// 查找可用的小车
for (auto& agv : agvs) {
if (agv.getState()) {
closest_agv = &agv;
break;
}
}
if (closest_agv == nullptr) { // 没有可用的小车,直接退出
return;
}
std::this_thread::sleep_for(std::chrono::milliseconds(100));
wait_time++;
}
```
void AGVScheduler::assign_task_to_agv(std::vector<Task>& tasks, std::vector<AGV>& agvs) { // 首先按照任务的完成状态、优先级进行排序 std::sort(tasks.begin(), tasks.end(), [](const Task& task_1, const Task& task_2) { if (task_1.completed != task_2.completed) { return !task_1.completed; } else { return task_1.priority < task_2.priority; } }); for (const auto& task : tasks) { std::cout << "Task name: " << task.id << ", Completed: " << task.completed << ", Priority: " << task.priority << std::endl; } // 遍历任务列表,分配任务给可用的小车 for (auto& task : tasks) { if (!task.completed) { AGV* closest_agv = nullptr; // 初始化为 nullptr while (closest_agv == nullptr) { // 查找可用的小车 for (auto& agv : agvs) { if (agv.getState()) { closest_agv = &agv; break; } } if (closest_agv == nullptr) { // 没有可用的小车,等待一段时间再查找 std::this_thread::sleep_for(std::chrono::seconds(1)); } } // 找到最近的可用小车 int min_distance = INT_MAX; for (auto& agv : agvs) { if (agv.getState()) { int distance = abs(agv.getCurrentX()- task.start_x) + abs(agv.getCurrentY() - task.start_y); if (distance < min_distance) { min_distance = distance; closest_agv = &agv; } } } // 将任务分配给 AGV 对象的起点和终点坐标 closest_agv->setStartCoord(task.start_x, task.start_y); closest_agv->setEndCoord(task.end_x, task.end_y); closest_agv->setState(false); task.completed = true; std::cout << closest_agv->getid() << "," << task.id << endl; } } },當沒有小車用的時候就卡死,添加代碼,找到可用小車的開始運行,沒找到可用小車的一直等待,直到有可用小車
你可以在 while 循环中添加一个计数器,当超过一定次数后就退出循环,避免程序一直卡在那里等待。另外,在找到可用小车后,你可以将其状态改为不可用,避免其他任务再次分配给它。
以下是修改后的代码:
```
while (closest_agv == nullptr && count < 10) { // 查找可用的小车,最多等待 10 秒钟
for (auto& agv : agvs) {
if (agv.getState()) {
closest_agv = &agv;
break;
}
}
if (closest_agv == nullptr) {
std::this_thread::sleep_for(std::chrono::seconds(1));
count++;
}
}
if (closest_agv != nullptr) { // 找到可用的小车
closest_agv->setState(false); // 将小车状态改为不可用
int min_distance = INT_MAX;
for (auto& agv : agvs) {
if (agv.getState()) {
int distance = abs(agv.getCurrentX()- task.start_x) + abs(agv.getCurrentY() - task.start_y);
if (distance < min_distance) {
min_distance = distance;
closest_agv = &agv;
}
}
}
closest_agv->setStartCoord(task.start_x, task.start_y);
closest_agv->setEndCoord(task.end_x, task.end_y);
task.completed = true;
std::cout << closest_agv->getid() << "," << task.id << endl;
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)