Android线程优先级问题

yhzqx 2013-12-31 10:33:20
不管是先给textview附值还是后给,都是先执行sleep想问一下其中的原理
tv.setText("random----->"+Math.random()*100);			
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//tv.setText("11111111111");


还有在不单开线程启动server时再sleep又出现按钮先弹起来然后server执行sleep然后自己结束的情况
Log.v("thread_ID----->", ""+Thread.currentThread().getId());
tv.setText("random----->"+Math.random()*100);
Intent intent =new Intent();
intent.setAction(MyServer.MY_ACTION);
startService(intent);
//tv.setText("11111111111");

public int onStartCommand(Intent intent, int flags, int startId) {
Log.v("thread_ID2----->", ""+Thread.currentThread().getId());
try {
Thread.sleep(8000);
} catch (InterruptedException e) {
e.printStackTrace();
}
stopSelf();
return super.onStartCommand(intent, flags, startId);
}
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.v("ondestroy", "ondestroy");
}
...全文
173 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhzqx 2013-12-31
  • 打赏
  • 举报
回复
Birds2018 2013-12-31
  • 打赏
  • 举报
回复
默认情况下,代码执行都是顺序执行的。 如果启动了多个线程,CPU会交替执行,优先级是等同的,除非特别指定优先级。 如 某个线程中加了sleep 这样休眠当前线程,其他线程会获得更多的机会执行。 在主线程中sleep 相当于是阻塞当前应用程序。
c16882599 2013-12-31
  • 打赏
  • 举报
回复
因为setText方法只是把这个操作放到主线程的任务队列。 当前正在运行的代码也是有主线程处理的,只有当前任务处理完了, 主线程才会从队列里取出下一个任务执行

80,351

社区成员

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

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