关于多线程导致CPU占用率的问题

Jeson_y 2016-10-31 03:36:16
public void run() {
// List<AccessVo> vos = assess.get();
if (assess.size() == 0) {
return;
}
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
while (!isInterrupted()) {
for (AccessVo acs : assess) {
if (sdf.format(new Date()).equals(sdf.format(acs.getAccessTime()))) {
//通过Spring工具类,注入Service
managementService = (ManagementService) SpringApplicationContextHolder
.getSpringBean("managementService");
HttpTookit.doGet(acs.getUrl(), managementService);
}
}
try {
Thread.sleep(900);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}




threadName = "monit" + targetId;
// 获取当前JVM所有线程
int flag = 0;
for (Thread thread : allThreads) {
// 如果存在就中断,重新创建一个线程
if (threadName.equals(thread.getName())) {
// thread.stop();// 中断此线程
// thread.join();
thread.interrupt();
DoAccessing newThread = new DoAccessing();
newThread.setAssess(vos);
Thread t = new Thread(newThread);
t.setName(threadName);
t.start();
flag++;
break;
}
}
if (flag == 0) {
// 没有则创建
DoAccessing newThread = new DoAccessing();
newThread.setAssess(vos);
Thread t = new Thread(newThread);
t.setName(threadName);
t.start();
}
} catch (Exception e) {
e.printStackTrace();
}




按照如上情况,我的程序最多会启动 7个线程,可是为什么会导致CPU占用率达到 50%上下呢
...全文
560 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jeson_y 2016-11-01
  • 打赏
  • 举报
回复
引用 2 楼 Sun1956 的回复:
1个CPU,1个线程,死循环一直计算,CPU会达到100% 2个CPU,2个线程,死循环一直计算,CPU也会达到100% ........... 上面是理想状况下,CPU会不断在切换,保证多任务,而且还有2核4线程,4核8线程的之类的, 所以你的50%很高吗。你可以测试下,7个线程,死循环跑简单的加减法运算,发现结果也差不多。
你的意思是,我这完全是正常的嘛?
ps45221 2016-10-31
  • 打赏
  • 举报
回复
1个CPU,1个线程,死循环一直计算,CPU会达到100% 2个CPU,2个线程,死循环一直计算,CPU也会达到100% ........... 上面是理想状况下,CPU会不断在切换,保证多任务,而且还有2核4线程,4核8线程的之类的, 所以你的50%很高吗。你可以测试下,7个线程,死循环跑简单的加减法运算,发现结果也差不多。
Jeson_y 2016-10-31
  • 打赏
  • 举报
回复
搞的我电脑风扇一直在呼呼的转

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧