实现多线程的方法一:
Java的线程可以通过继承java.lang.Thread类来实现的。
例:下面的类Thread07继承自Thread
import java.io.PrintStream;
public class Thread07 extends Thread
{
public Thread07()
{
}
public void run() //重写run方法,在启动线程的时候会被java虚拟机自动调用
{
for(int i = 0; i < 10; i++)
printMsg();
}
public void printMsg()
{
Thread t = Thread.currentThread();
String name = t.getName(); //得到该线程的名字
System.out.println((new StringBuilder("name = ")).append(name).toString());
}
public static void main(String args[])
{
Thread07 t = new Thread07();
t.setName("test Thread"); //设置线程的名字
System.out.println((new StringBuilder("before start().tisAlive")).append(t.isAlive()).toString());
t.start(); //启动线程需要通过调用start的方法启动该线程,不是用户自己调用run方法
System.out.println((new StringBuilder("just after start().tisAlive")).append(t.isAlive()).toString());
for(int i = 0; i < 10; i++)
{
try
{
Thread.sleep(1000L);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
t.printMsg();
}
System.out.println((new StringBuilder("buding")).append(t.isAlive()).toString());
}
}
实现多线程的方法二:
Java的线程可以通过继承Runnable接口来实现:
例:下面的类MyThread05继承自Runnable接口:
import java.io.PrintStream;
class MyThread05 implements Runnable //继承Runnable接口
{
MyThread05()
{
}
public void run() //重写run方法
{
for(int i = 0; i < 100; i++)
System.out.println((new StringBuilder(String.valueOf(name))).append("----->oooppooo").toString());
}
public static void main(String args[])
{
//实例化三个线程
MyThread mt1 = new MyThread("~~~A~~~");
MyThread mt2 = new MyThread("~~~B~~~");
MyThread mt3 = new MyThread("~~~C~~~");
//分别通过调用start方法进行启动
mt1.start();
mt2.start();
mt3.start();
}
}
后记:
1、进程与线程的区别 · 线程是在进程基础上的划分 · 进程是在操作系统上的划分
2、 使用多线程可以发现在同一个时间段上所有的程序是交替运行的。
3、 多线程的实现有两种方式: · 实现Runnable接口 · 继承Thread类
4、 联系与区别: · Thread类也是Runnable接口的子类 · 如果要想启动线程,则必须把自定义的实现了Runnable接口的子类对象放入Thread类中 · Runnable接口可以实现多个资源的共享 · 绝对要优先使用Runnable接口,避免单继承的局限。用Thread继承而来的线程,一个线程序对象只能启动一次,无论调用多少遍start方法,结果都只有一个线程。
posted on 2010-11-12 19:26
Soap MacTavish 阅读(6067)
评论(0) 编辑 收藏