多线程编程的初识

2017-11-25  本文已影响0人  W_Nicotine

什么是线程?

线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。

什么是多线程?

在单个程序中同时运行多个线程完成不同的工作,称为多线程

线程

线程的基本用法

1.继承Thread
class MyThread extends Thread{
   @Override
   public void run(){
       //具体的耗时逻辑
   }
}
new MyThread().start();
2.实现Runnable接口
class MyThread implements Runnable {
    @Override
    public void run() {
        //具体的耗时操作
    }
} 
MyThread myThread = new MyThread();
new Thread(myThread).start();
3.匿名类方式
  new Thread(new Runnable(){
        @Override
         public void run() {
             //具体的耗时操作
         }
     }).start();

在子线程中更新UI

方法一:使用Handler。
Handler mHandler = new Handler() {  
  
        @Override  
        public void handleMessage(Message msg) {  
            super.handleMessage(msg);  
            switch (msg.what) {  
            case 0:  
                //完成主界面更新,拿到数据  
                String data = (String)msg.obj;  
                  
                updateWeather();  
                textView.setText(data);  
                break;  
            default:  
                break;  
            }  
        }  
    }; 
private void updateWeather() {           
        new Thread(new Runnable(){  
            @Override  
            public void run() {  
                //耗时操作,完成之后发送消息给Handler,完成UI更新;  
                mHandler.sendEmptyMessage(0);  
                  
                //需要数据传递,用下面方法;  
                Message msg =new Message();  
                msg.obj = "数据";//可以是基本类型,可以是对象,可以是List、map等;  
                mHandler.sendMessage(msg);  
            }           
        }).start();           
    }  
方法二:用Activity对象的runOnUiThread方法
new Thread() {  
            public void run() {  
                //这儿是耗时操作,完成之后更新UI;  
                runOnUiThread(new Runnable(){  
  
                    @Override  
                    public void run() {  
                        //更新UI  
                        imageView.setImageBitmap(bitmap);  
                    }  
                      
                });  
            }  
        }.start(); 
Activity activity = (Activity) imageView.getContext();  
                activity.runOnUiThread(new Runnable() {  
  
                    @Override  
                    public void run() {  
                        imageView.setImageBitmap(bitmap);  
                    }  
                }); 

总结:

虽然在暑假的时候有粗略的看过这个知识点,但是印象不是很深刻,现在花一点时间继续学习这个知识点后发现,多线程的编程对我来说还是比较复杂的,我会在今后的学习中再继续学习这个知识点。

上一篇下一篇

猜你喜欢

热点阅读