Java中实现多线程主要有两种方式:继承Thread类、实现Runnable接口。
Thread类存放于java.lang类库中,系统默认加载这个包,所以可以直接使用Thread类。

class myThread extends Thread{
    属性
    方法
    修饰符 run(){ //激活的线程将从run()方法开始执行
        要执行的代码块
    } 
}

new myThread().start();  //在程序中需要执行线程的地方插入此语句,激活线程

在Java中不允许多继承,一个子类只能有一个父类,但是可以通过实现接口的方式达到多继承效果。因此,可以实现Runnable接口来创建线程。

class MyThread implements Runnnable(){
    属性
    方法
    public void run(){
        要执行的代码块
    }
}

MyThread myThread = new MyThread();  //实例化一个MyThread类型对象
new Thread(myThread).start();  //使用Thread类的start方法激活此线程

Runnable接口实现的线程类需要调用Thread类中的start()方法是由于Runnable接口中只有一个run()方法,没有start()方法。

举一个多线程的例子

public class ThreadDemo extends Thread {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		ThreadDemo t1 = new ThreadDemo();
		t1.start(); 
		try {
			Thread.sleep(10);
		} catch (InterruptedException e1) {
			// TODO 自动生成的 catch 块
			e1.printStackTrace();
		}
		for(int i=0;i<3;++i){
			t1.Msg(); //Msg()中调用了currentThread(),
                      //调用Msg()方法间接调用了currentThread()
                       //要注意的是,调用者是main线程,并非子线程实例t1
			try{
				Thread.sleep(1000);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
		}
	}
	
	public void run(){
		for(int i = 0; i<3; ++i){
			Msg();
			try{
				Thread.sleep(1000); //休眠线程1s
			}catch(InterruptedException e){
				e.printStackTrace();
			}
		}
	}
	
	public void Msg(){
		Thread t = Thread.currentThread(); //currentThread()是静态方法,
                                            //调用时要跟在类名后而非对象名,
                                             //该方法返回执行该方法的线程实例   
		String name = t.getName(); //获取线程名
		System.out.println("name = "+name);
	}
}

运行结果:

android rxandroid实现并发请求 android多线程并发实例_ide

在之前《MPD解析模块在Android中的实现》一文中,对耗时的MPD下载、解析过程创建了子线程,因为子线程不能对UI进行操作,于是调用showResponse(final String response)方法,将子线程的解析结构结果以string对象传递给UI线程,之后经过TextView显示出来。

private void showResponse(final String response) {//子线程中不允许进行UI操作,因此利用showResponse()方法切换到主线程更新
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                responseText.setText(response);//创建一个TextView显示传入字符串
            }
        });
    }

--------------------- 
原文:

在Android中Java多线程还有一个常见的用处,设置启动页。如果想在已有MainActivity基础上增加一个图片主题的启动页,可以利用多线程延迟MainActivity的启动,并在其启动之前调用布局的图片。

public class DisplayActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display);

        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                    Thread.sleep(3000); //MainAvtivity的启动时间延迟3秒
                }catch(InterruptedException e){
                    e.printStackTrace();
                }
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //跳转至 MainActivity
                        Intent intent = new Intent(DisplayActivity.this, MainActivity.class);  
                        startActivity(intent);
                        //结束当前的 Activity
                        DisplayActivity.this.finish();
                    }
                });
            }
        }).start();
    }
}

即在MainActivity之前增加DisplayActivity,DisplayActivity的layout文件中仅布局一张图片,这样即可实现Android App启动页(广告)设置。