线程的同步与异步
来源:互联网 发布:如皋 java培训学校 编辑:程序博客网 时间:2024/04/28 16:43
package com.handler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
public class HanderThreadTest extends Activity {
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//handler.post(r);
setContentView(R.layout.main);
//标准方法启动线程
Thread t = new Thread(r);
t.start();
System.out.println("activity------->" + Thread.currentThread().getId());
System.out.println("activityname--------->" + Thread.currentThread().getName());
}
Runnable r = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("handler------->" + Thread.currentThread().getId());
System.out.println("handlername--------->" + Thread.currentThread().getName());
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}
里面用hadler将线程加入到队列中,它输出的内容和setContentView(R.layout.main);显示后面输出的内容是一样的,说明handler并没有开启一个新的线程,它是直接调用Runnable的run方法的,是同步的。而用Thread类。将线程加载后,调用自己的start方法开启线程后,两处输出的内容不一致,说明Thread开启的是一个独立的新线程,说明是异步的。
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
public class HanderThreadTest extends Activity {
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//handler.post(r);
setContentView(R.layout.main);
//标准方法启动线程
Thread t = new Thread(r);
t.start();
System.out.println("activity------->" + Thread.currentThread().getId());
System.out.println("activityname--------->" + Thread.currentThread().getName());
}
Runnable r = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("handler------->" + Thread.currentThread().getId());
System.out.println("handlername--------->" + Thread.currentThread().getName());
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}
里面用hadler将线程加入到队列中,它输出的内容和setContentView(R.layout.main);显示后面输出的内容是一样的,说明handler并没有开启一个新的线程,它是直接调用Runnable的run方法的,是同步的。而用Thread类。将线程加载后,调用自己的start方法开启线程后,两处输出的内容不一致,说明Thread开启的是一个独立的新线程,说明是异步的。
- 线程的同步与异步
- 线程的同步与异步
- 线程的同步与异步
- 线程的同步与异步
- 线程的同步与异步
- 线程同步与异步
- 线程同步与异步
- 线程同步与异步
- 线程同步与异步
- 线程同步与异步的区别
- 线程同步与异步的学习摘记
- java线程 同步与异步
- java线程 同步与异步
- 线程中的同步与异步
- java线程 同步与异步
- java线程 同步与异步 线程池
- java线程 同步与异步 线程池
- java线程 同步与异步 线程池
- 基于自由Linux十一国庆后的第四天提升
- make xxx Is a directory. Stop. 的原因
- 圆的Bresenham算法的opengL实现
- ARM 学习笔记(二) S3C2440 中断配置
- GBK(GB2312)向UTF-8的编码转换 -- C++
- 线程的同步与异步
- 基于自由Linux十一国庆后的第五天提升
- 面试题系列之一
- Android 在LogCat视图中过滤信息。
- linux主机名和工作组的修改方法
- 滑动窗口机制
- C#键击游戏
- Ada2012与先前版本的主要特色比较
- NSData 小测试