1、通过扩展Thread类来创建多线程
假设有三个窗口,每个窗口各有100张票
public class ThreadDemo {
public static void main(String[] args) {
MyThread m1=new MyThread("Window 1");
MyThread m2=new MyThread("Window 2");
MyThread m3=new MyThread("Window 3");
m1.start();
m2.start();
m3.start();
}
}
public class MyThread extends Thread {
private int ticket=100;//每个窗口都拥有100张票
String name;
public MyThread(){
<span style="white-space:pre"> </span>this.name=name
}
@Override
public void run() {
while(ticket>0){
System.out.println(ticket--+" is saled by "+name);
}
}
}
2、通过实现Runnable接口来创建多线程
假设有三个窗口,每个窗口各有100张票
<span style="font-size: 19px;">public class ThreadDemo {
public static void main(String[] args) {
MyThread m1=new MyThread("Window 1");
MyThread m2=new MyThread("Window 2");
MyThread m3=new MyThread("Window 3");
Thread t1=new Thread(m1);
Thread t2=new Thread(m2);
Thread t3=new Thread(m3);
t1.start();
t2.start();
t3.start();
}
}
public class MyThread implements Runnable{
private int ticket=100;//每个窗口都拥有100张票
String name;
public MyThread(){
this.name=name
}
public void run(){ while(ticket>0){
<span style="white-space:pre"> </span>System.out.println(ticket--+" is saled by "+name);
} } }
由于这三个线程也是彼此独立,各自拥有自己的资源,即100张票,因此程序输出的结果和 1 结果大同小异。均是各自线程对自己的100张票进行单独的处理,互不影响。
可见,只要现实的情况要求保证新建线程彼此相互独立,各自拥有资源,且互不干扰,采用哪个方式来创建多线程都是可以的。因为这两种方式创建的多线程程序能够实现相同的功能。