android 多线程问题.

ajq1989 2011-09-07 10:15:24

private void test(){
for (int i = 0; i < NUM; i++) {
final int No = i;
Thread thread = new Thread(new Runnable() {

@Override
public void run() {
// System.out.println("Thread:" + No);
// TODO Auto-generated method stub
Thread.currentThread().setName(No+"");
HttpClient httpClient = new DefaultHttpClient();
//设置请求超时
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);
//设置读取超时
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,3000);
HttpGet get = new HttpGet(URL);
try {
HttpResponse response = httpClient.execute(get);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String strResult = EntityUtils.toString(response
.getEntity());
Log.i("ThreadID:" + Thread.currentThread().getName(),
strResult);
System.out.println(Thread.currentThread().getName());
System.out.println(strResult);
} else {
System.out.println(Thread.currentThread().getName()+"请求失败");
}
Thread.sleep((long) Math.random() * 1000);
}catch (InterruptedException e) {
// TODO: handle exception
Log.i("ThreadID:" + Thread.currentThread().getName(),
"请求失败");
System.out.println(Thread.currentThread().getName()+"线程阻塞请求失败");
e.printStackTrace();
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
Log.i("ThreadID:" + Thread.currentThread().getName(),
"请求失败");
System.out.println(Thread.currentThread().getName()+"请求失败");
}
catch (Exception e) {
// TODO: handle exception
Log.i("ThreadID:" + Thread.currentThread().getId(),
"请求失败");
System.out.println(Thread.currentThread().getId()+"请求失败");
e.printStackTrace();
}
}
});
thread.start();
}
}


要求是每个线程返回响应信息.代码是否有问题呢.
我在硬件配置高的安卓机器上运行没问题. 可以输出每个线程的响应信息.
在配置较低的机器上.直接卡死. 每个线程都抛出异常.
我是要测试一个压力问题. 这两种情况说明什么问题了. 还是我的代码写得有问题.
...全文
184 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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