在java中可有兩種方式實現多線程
Thread類是在java
run()方法就可以實現多線程操作了
下面看例子
package org
class MyThread extends Thread{
private String name;
public MyThread(String name) {
super();
this
}
public void run(){
for(int i=
System
}
}
}
package org
public class ThreadDemo
public static void main(String[] args) {
MyThread mt
MyThread mt
mt
mt
}
}
但是
start()方法啟動線程
package org
public class ThreadDemo
public static void main(String[] args) {
MyThread mt
MyThread mt
mt
mt
}
};這樣程序可以正常完成交互式運行
在JDK的安裝路徑下
·Runnable接口
在實際開發中一個多線程的操作很少使用Thread類
public interface Runnable{
public void run();
}
例子
package org
class MyThread implements Runnable{
private String name;
public MyThread(String name) {
this
}
public void run(){
for(int i=
System
}
}
};
但是在使用Runnable定義的子類中沒有start()方法
此構造方法接受Runnable的子類實例
線程
package org
import org
public class ThreadDemo
public static void main(String[] args) {
MyThread mt
MyThread mt
new Thread(mt
new Thread(mt
}
}
· 兩種實現方式的區別和聯系
在程序開發中只要是多線程肯定永遠以實現Runnable接口為主
繼承Thread類有如下好處
以賣票程序為例
package org
class MyThread extends Thread{
private int ticket=
public void run(){
for(int i=
if(this
System
}
}
}
};
下面通過三個線程對象
package org
public class ThreadTicket {
public static void main(String[] args) {
MyThread mt
MyThread mt
MyThread mt
mt
mt
mt
}
}
如果用Runnable就可以實現資源共享
package org
class MyThread implements Runnable{
private int ticket=
public void run(){
for(int i=
if(this
System
}
}
}
}
package org
public class RunnableTicket {
public static void main(String[] args) {
MyThread mt=new MyThread();
new Thread(mt)
new Thread(mt)
new Thread(mt)
}
};
雖然現在程序中有三個線程
Runnable接口和Thread之間的聯系
public class Thread extends Object implements Runnable
發現Thread類也是Runnable接口的子類
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27649.html