android线程执行顺序执行
❶ 如何实现线程顺序 android
函数执行到 Thread d=new Daemon(); 这一句,不是等这一句执行完了再继续执行下一句的,因为d 是一个线程,是并行的执行,有时间片就执行,没有就暂停执行,你把mian函数改成下面的运行一下,看看结果就知道了,我是写web程序的,不怎么用线程,所以只是按照自己的理解说的,错了请指点... ps:(我刚注册的,怎么就有人找到我,网络自动匹配?) public static void main(String[] args) throws Exception { Thread d = new Daemon(); for (int i = 0; i < 100; i++) { System.out.println("=====:"+i); } Thread.sleep(1); }
❷ android怎么提高线程的优先级
线程调度 计算机通常只有一个CPU,在任意时刻只能执行一条机器指令,每个线程只有获得CPU的使用权才能执行指令.所谓多线程的并发运行,其实是指从宏观上看,各个线程轮流获得CPU的使用权,分别执行各自的任务.在运行池中,会有多个处于就绪状态的线程在等待CPU,java虚拟机的一项任务就是负责线程的调度,线程调度是指按照特定机制为多个线程分配CPU的使用权. 有两种调度模型:分时调度模型和抢占式调度模型。 分时调度模型是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片这个也比较好理解。 java虚拟机采用抢占式调度模型,是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。处于运行状态的线程会一直运行,直至它不得不放弃CPU。 一个线程会因为以下原因而放弃CPU。 1 java虚拟机让当前线程暂时放弃CPU,转到就绪状态,使其它线程或者运行机会。 2 当前线程因为某些原因而进入阻塞状态 3 线程结束运行 需要注意的是,线程的调度不是跨平台的,它 不仅仅取决于java虚拟机,还依赖于操作系统。在某些操作系统中,只要运行中的线程没有遇到阻塞,就不会放弃CPU;在某些操作系统中,即使线程没有遇到阻塞,也会运行一段时间后放弃CPU,给其它线程运行的机会。 java的线程调度是不分时的,同时启动多个线程后,不能保证各个线程轮流获得均等的CPU时间片。 如果希望明确地让一个线程给另外一个线程运行的机会,可以采取以下办法之一。 调整各个线程的优先级 让处于运行状态的线程调用Thread.sleep()方法 让处于运行状态的线程调用Thread.yield()方法 让处于运行状态的线程调用另一个线程的join()方法
❸ Android这段代码执行顺序我不十分清楚,请帮我分析下,先执行哪句,再执行哪句不要泛泛的讲线程
1,执行onCreate方法,
2,启动线程 执行线程里的run()方法。
3,执行到handler.sendMessage(msg);就跳到private Handler handler = new Handler()里,
4,执行public void handleMessage(Message msg),根据传过来的msg的值,来显示图片
不用匿名内部类的话,就很简单了。单独在外面写两个类,一个继承Thread,并重载run方法,一个继承Handler,重载handlemessage方法。方法内容就跟你上面一样,
然后在Activity的onCreate方法里,定义自己的线程MyThread mThread,实例化后调用start。同理定义自己的Handle 调用方法Myhandler.handlemessage().就ok饿,我只能把思路给你,挺简单的,就是新写两个类嘛。全部写出来我没那个功夫
❹ Android3.0以后,Asynctask在没开线程池的情况下会怎么排队执行
当然不是了,是一个task里面的所有任务都是顺序执行的,多个task之间没有同步关系的。
❺ android定义一个方法在方法中开启一个线程执行耗时操作发送消息,如何在确保重复调用该方法
Executors.newSingleThreadExecutor()
单线程线程池,是顺序执行的。
❻ android 线程是同时运行还是有先后次序
如果有两个线程的话,开启的顺序是你主线程中的子线程的start先后顺序,一旦都开启,那就是同时运行在主线程中了,不分先后。
❼ android 线程池 怎么用
我觉得使用线程池最大的优点是我们可以对我们开启的线程进行跟进,当我们不需要处理的时候可以将它shutdow掉,同时当我们定义了一个线程池之后,可以复用线程而不需要开启更多线程,这点对于我们手机开发是至关重要的,你开启的thread越多意味着你的app内存消耗越多,速度也就越来越慢,提高现有线程的复用是一个很棒的选择
线程池中处理线程的类别较多如:
限制按顺序来执行任务的线程池、一个一个任务的执行线程池、按指定个数来执行任务的线程池、创建一个可在指定时间里执行任务的线程池,亦可重复执行、按指定工厂模式来执行的线程池
❽ android handler demo中代码执行顺序有些疑问,代码可以运行
no1,no4就不说了,当点击按钮执行:updateBarHandler.post(updateThread);时,实际上就是开始执行Runnable的run方法,睡眠500毫秒后,调用updateBarHandler.sendMessage(msg);方法,这时updateBarHandler会调用你重写的handleMessage(int msg)方法,至于no5,代码写的很清楚了,当i>=100时,才会执行System.out.println("No.5");另android调试一般都是用log打印信息
❾ android的dialog方法执行顺序很奇怪,求教!
这种方法可以实现你想要的效果,先dismiss掉dialog,5s后显示Toast。
这种情况最好是另开线程去计时5s,然后通知主线程去显示Toast。
在oncreate中加入
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch(msg.what){
case 0:
Toast.makeText(getApplicationContext(), "sleep 5000.", Toast.LENGTH_LONG).show();
break;
}
}
};
protected Dialog onCreateDialog(final int id) {
switch (id) {
case 1:
return new AlertDialog.Builder(this).setTitle("test").setPositiveButton("click", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dismissDialog(1);
// 此处为计时5s
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// 5s后发送消息更新UI主线程
mHandler.sendEmptyMessage(0);
}
};
timer.schele(task, 1000 * 5);
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).show();
}
return super.onCreateDialog(id);
}
或者是把dismissDialog(1);后的写成
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
mHandler.sendEmptyMessage(0);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
❿ android指令的执行顺序
请问下你保存数据是放到哪里?服务器还是本地。
处理照片返回的时候在onactivityresult里操作 启动另外一个activity
直接Intent丢过需要保存的数据到另外一个activity里去。
在不行就调试看数据了。是不是有误