站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题三种方式实现线程

三种方式实现线程

摘要: 三种方式实现线程

</td> </tr> <tr> <td width="498" height="35" valign="top" class="ArticleTeitle"> 有三种方式实现Runnable接口(代码来自《java经典实例》)
1、直接扩展Thread类,这最适于不需要扩展其他类的独立程序,如下所示:

public class ThreadsDemo1 extends Thread {
String mesg;
int count;
public void run() {
while (count-- > 0) {
println(mesg);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
return;
}
}
println(mesg + " all done.");
}

void println(String s) {
System.out.println(s);
}

public ThreadsDemo1(String m, int n) {
count = n;
mesg = m;
setName(m + " runner Thread");
}


public static void main(String[] argv) {
new ThreadsDemo1("Hello from X", 2).start();
new ThreadsDemo1("Hello from Y", 3).start();
}
}
运行结果:
C:\java>java ThreadsDemo1
Hello from X
Hello from Y
Hello from X
Hello from Y
Hello from X all done.
Hello from Y
Hello from Y all done.

2、直接实现Runnable接口。适于扩展了JApplet或其他类从而无法扩展Thread类,如下所示


public class ThreadsDemo2 implements Runnable {
String mesg;
Thread t;
int count;

public static void main(String[] argv) {
new ThreadsDemo2("Hello from X", 2);
new ThreadsDemo2("Hello from Y", 3);
}

public ThreadsDemo2(String m, int n) {
count = n;
mesg = m;
t = new Thread(this);
t.setName(m + " runner Thread");
t.start();
}

public void run() {
while (count-- > 0) {
println(mesg);
try {
Thread.sleep(100); // 100 msec
} catch (InterruptedException e) {
return;
}
}
println(mesg + " thread all done.");
}

void println(String s) {
System.out.println(s);
}
}
运行结果:
C:\java>java ThreadsDemo2
Hello from X
Hello from Y
Hello from X
Hello from Y
Hello from X thread all done.
Hello from Y
Hello from Y thread all done.
3、构造一个Thread,传入实现了Runnable的内部类。最适于不与外界互操作的较小的run()方法,
如下所示

public class ThreadsDemo3 {
String mesg;
Thread t;
int count;
/**
* Main program, test driver for ThreadsDemo3 class.
*/
public static void main(String[] argv) {
new ThreadsDemo3("Hello from X", 10);
new ThreadsDemo3("Hello from Y", 15);
}
public ThreadsDemo3(String m, int n) {
count = n;
mesg = m;
t = new Thread(new Runnable() {
public void run() {
while (count-- > 0) {
println(mesg);
try {
Thread.sleep(100); // 100 msec
} catch (InterruptedException e) {
return;
}
}
println(mesg + " thread all done.");
}
});
t.setName(m + " runner Thread");
t.start();
}

void println(String s) {
System.out.println(s);
}
}

C:\java>java ThreadsDemo3
Hello from X
Hello from Y
Hello from X
Hello from Y
Hello from X thread all done.
Hello from Y
Hello from Y thread all done.
</td> <td width="186" valign="top" class="ArticleTeitle">
</td> </tr> <tr> <td height="25" colspan="2" valign="top" class="ArticleTeitle">


↑返回目录
前一篇: 文件重命名
后一篇: 列出目录下的指定类型的文件