本帖最后由 J_hom 于 2013-3-30 23:52 编辑
java的多线程实现
在java中如果要想实现多线程可以采用以下两种方式:
·继承Thread类
·实现Runable接口
Thread类与Runnable类的深入关系
public class Thread
extends Object
implements Runnable
从Thread的定义格式可以发现,Thread类也是Runnable接口的子类。(public class Thread extends Object implements Runnaable)
使用Thread类在操作多线程的时候无法达到资源共享的目的,而使用Runnable接口实现多线程操作可以实现资源共享。
class MyThread extends Thread{//继承Thread类,作为线程的实现类
private String name;//表示线程的名称
public MyThread(String name){
this.name=name;//通过构造方法配置name属性
}
public void run(){
for(int i=0;i<10;i++){
System.out.println(name+"运行,i="+i);
}
}
};
public class ThreadDemo01{
public static void main(String args[]){
MyThread mt=new MyThread("A线程");
MyThread mt1=new MyThread("B线程");
//mt.run();//start()方法包含了run()方法,且两种方法运行方式不同run()方法是按顺序启动线程。
//mt1.run();//start()方法是按照CPU资源启动线程,随机启动的。
mt.start();
mt1.start();
}
}
Runnable接口
class MyThread implements Runnable{//实现Runnable接口,作为线程的实现类
private String name;//表示线程的名称
public MyThread(String name){
this.name=name;//通过构造方法配置name属性
}
public void run(){//覆写run()方法,作为线程的操作主体
for(int i=0;i<10;i++){
System.out.println(name+"运行,i="+i);
}
}
};
public class RunnableDemo01{
public static void main(String args[]){
new Thread(new MyThread("线程A")).start();
new Thread(new MyThread("线程B")).start();
}
}
实现Runnable接口比继承Thread类有如下的明显优点:
·适合多个相同程序代码的线程去处理同一个资源
·个以避免由于单继承局限所带来的影响
·增强了程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。
所以开发中使用Runnable接口是最合适的。
这是自己自学时做的笔记 |