线程的同步与异步

来源:互联网 发布:如皋 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开启的是一个独立的新线程,说明是异步的。