作者dnzteeqrq (过客)
看板java
标题[问题] 有的 Thread 会装死
时间Sun Jan 21 18:30:34 2018
public A extends Thread{
public static void main(String args[]){
List<Thread> threadList = new ArrayList<Thread>();
for (int i = 1; i <= 10 ; i++) {
Thread t = new Thread(new A());
t.setPriority(Thread.MAX_PRIORITY);
threadList.add(t);
}
for(Thread t:threadList){
t.start();
}
}
@Override
public void run(){
for(int i=0;i<1000;i++){
// 使用 apache httpcomponents-client 套件
HttpClient client = HttpClientBuilder.create().build();
HttpGet request = new HttpGet(url);
HttpResponse response;
// 10 个 Thread 排队发送 request
synchronized (A.class) {
response = client.execute(request);
}
.........
}//end for
}
}
目前遇到一个问题 , 一个 Thread 发送 1000 次 request ,
一次执行 10 个 Thread , 每次执行固定会有2个大幅落後其他8个
, 这 8 个 大概同时执行完毕 , 但另外 2 个可能只执行到 500 次
左右 , 谓何有 2 个 Thread 好像抢不到资源的样子 , 照理说会照
排队一个一个处理才是 ,应该不至於差这麽多 冏rz
後来有设定优先顺序 , 10 个 Thread 都设最高 、 也有设定记忆体
-Xmx=2500m , 结果还是一样 0rz
有没有高手帮忙解答一下 >.<
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.182.159
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1516530638.A.19F.html
※ 编辑: dnzteeqrq (220.135.182.159), 01/21/2018 20:29:09
1F:→ ssccg: 照理说会排队? 是照什麽理? synchronized不保证照顺序 01/21 20:58
以前单核心 时 , D C B A , A 先执行完 换 B 这样
当然有可能 B 比 A 更快处理完毕 变成 A B D C
当然如果优先顺序等级不一样就会看谁的设定等级高 @@a
(以前单核心 也想说不管顺序 A B C D 一起抢 看谁抢到谁执行 ,
不过得到的结果是 优先顺序一样 , 就先进先出 )
不过现在多核心 , 优先等级都一样分配的机率应该不会差太多 , 可是每次
就会固定有 2 个 慢别人一半 @@a 还是我的观念有误吗 ?
※ 编辑: dnzteeqrq (220.135.182.159), 01/21/2018 21:18:13
2F:→ ssccg: 有分到CPU的thread连抢很多次lock,而没有分到CPU的thread 01/21 21:05
3F:→ ssccg: 过一段时间才能试一次是很可能发生的,你的CPU是8 thread? 01/21 21:05
是ㄟ @@ , 我以为其中一个执行完 , 下一个就能马上拿到 lock @@
, 这块观念我再去加强一下 QQ
4F:→ ssccg: 要保证排队需要有个Queue去实作 01/21 21:06
好的 , 非常感谢说明 @@y
※ 编辑: dnzteeqrq (220.135.182.159), 01/21/2018 21:34:39
5F:推 feeya: 回圈加个sleep是不是比较不会卡住 01/24 17:49
我有试着在synchronized一解锁後就 sleep 50 毫秒 , 结果差不多 @@
,不过拿掉synchronized , 10个大概同时执行完毕(没有sleep) ,想不到
lock 影响这麽大
※ 编辑: dnzteeqrq (220.135.182.159), 01/24/2018 20:53:47
6F:→ Expsun: thread starvation 01/27 01:56
感谢说明 ^q^
https://goo.gl/9ujwb8
※ 编辑: dnzteeqrq (1.168.21.65), 01/27/2018 12:08:57
7F:推 NullLife: 喔喔喔 (笔记 02/06 14:37