Posted on 2010-11-08 11:41
セ军魂ミ 阅读(516)
评论(0) 编辑 收藏 所属分类:
java_多线程
今天刚接触了java中的多线程,感觉这方面对以后很多程序的操作都很有帮助,即相当于程序的同时运行。现在就于我对多线程中Thread类和Runnable接口的初步认识,给大家做个简单的认识:
1、从JDK文档中可以发现Thread类实际上也是实现了Runnable;
2、用Thread继承而来的线程,一个线程序对象只能启动一次,无论调用多少遍start()方法,结果都只有一个线程;
注:sart()方法是使该线程开始执行,java虚拟机调用该线程的run()方法,也可以调用被子类覆盖写过的方法。
3、实现Runnable接口比继承Thread类的好处:①适合多个相同程序代码的线程去处理同一资源的情况,也能避免由于java
单线程处理带来的局限,即处理更为灵活。
②有利于程序的健壮性,能实现资源的共享。
第一种方式:继承Thread类
class MyThread extends Thread{
//线程延迟时间
private int time;
//线程的名字由Thread累自行管理
public MyThread(String name,int time){
//调用Thread类中的构造方法,设置线程的名字
super(name);
this.time=time;
}
public void run(){
for(int i=0;i<10;i++){
try {
Thread.sleep(this.time);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.printMsg();
}
}
public void printMsg(){
System.out.println (Thread.currentThread().getName()+"-->***正在运行***"+this.time+"秒");
}
}
public class Demo {
public static void main(String[] args){
MyThread mt = new MyThread("AA",100);
MyThread mt1 = new MyThread("BB",200);
MyThread mt2 = new MyThread("CC",300);
mt.start();
mt1.start();
mt2.start();
}
}
运行结果:
第二方式:实现Ruanable接口
class MyThread1 implements Runnable{
private String name;
private int time;
public MyThread1(String name,int time){
this.name= name;
this.time=time;
}
public void run(){
for(int i=0;i<10;i++){
try {
Thread.sleep(this.time);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.printMsg();
}
}
public void printMsg(){
System.out.println (this.name+"-->***正在运行***"+this.time+"秒");
}
}
public class DemoF {
public static void main(String[] args){
MyThread mt = new MyThread("AA",100);
MyThread mt1 = new MyThread("BB",200);
MyThread mt2 = new MyThread("CC",300);
mt.start();
mt1.start();
mt2.start();
}
}
运行结果:类同于上一种方法的结果,只是出的顺序不相同