之前的项目里要做一个异步更新UI的功能,但是结果出现了ANR,所以想写个demo来测试到底是哪个地方出现了问题,结果发现原来的思路是没有问题,郁闷~~
现在这个demo 就是模拟项目里面 的步骤
1、接收到系统的广播(现在模拟为人工发送)
2、广播接收到后,handler通知异步线程从网上下载数据,是异步(模拟为sleep)
3、数据下载完后handler再通知UI更新
下面是主...
分类:
移动开发 时间:
2014-09-28 16:32:32
阅读次数:
250
开启新线程new Thread(new Runnable(){ public void run(){ Thread.sleep(XXXX); handler.sendMessage(); //告诉主线程执行任务 } }).start利用定时器TimerTask task = ...
分类:
移动开发 时间:
2014-09-27 22:23:30
阅读次数:
219
/*注意:使用取消功能要很注意,很多C库函数(有阻塞性质的)也隐含有取消点,比如sleep(),pthread_cond_wait(),而且,取消线程并不能完全释放线程资源,所以编程的时候尽量不要使用取消功能。但是,下面这个情况用 异步取消+join 可以达到终止无限循环线程的目的:*/#inclu...
分类:
其他好文 时间:
2014-09-27 02:19:38
阅读次数:
181
#include #include #include #include #includepthread_rwlock_t mutex; void *thread1(void *arg) { printf("start thread (1)\n"); sleep(2);...
分类:
其他好文 时间:
2014-09-27 00:40:48
阅读次数:
199
ava中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。共同点:1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而...
分类:
编程语言 时间:
2014-09-26 20:15:08
阅读次数:
165
public static void main(String[] args) {Runner1 r1 = new Runner1();Thread t = new Thread(r1);t.start();try {Thread.sleep(10000);} catch (InterruptedEx...
分类:
编程语言 时间:
2014-09-25 20:16:17
阅读次数:
168
<?phpdeclare(ticks = 1);function a(){ sleep(10); echo "a finishi\n";}function b(){ echo "Stop\n";}function c(){ usleep(100000);}function s...
分类:
Web程序 时间:
2014-09-25 18:01:57
阅读次数:
182
package?main
import(
????//"fmt"
????"time"
)
var?c?=?make(chan?int,100)
func?gofunc(){
????time.Sleep(0)
????c<-0
}
func?main(){
????for?i:=0;i<10;i++{
???????...
分类:
其他好文 时间:
2014-09-25 12:21:09
阅读次数:
264
首先来看看如何创建线程:
Console.WriteLine(Process.GetCurrentProcess().Threads.Count);
Thread t1 = new Thread(() =>
{
Thread.Sleep(1000);
Thread t = Thread.CurrentThread;
Console.Writ...
分类:
编程语言 时间:
2014-09-24 18:46:17
阅读次数:
400
第一种解释:
功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁。
还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断,wait()可以用notify()直接唤起。...
分类:
编程语言 时间:
2014-09-24 17:22:57
阅读次数:
190