开课吧Java课堂:如何创建多线程

大多数情况,通过实例化一个Thread对象来创建一个线程。Java定义了两种方式:
· 实现Runnable 接口。
· 可以继承Thread类。

为什么Java有两种创建子线程的方法?所有的问题都归于一点。Thread类定义了多种方法可以被派生类重载。对于所有的方法,惟一的必须被重载的是run()方法。这当然是实现Runnable接口所需的同样的方法。

很多Java程序员认为类仅在它们被加强或修改时应该被扩展。因此,如果你不重载Thread的其他方法时,最好只实现Runnable 接口。这当然由你决定。然而,在本章的其他部分,我们应用实现runnable接口的类来创建线程。

创建多线程
到目前为止,我们仅用到两个线程:主线程和一个子线程。然而,你的程序可以创建所需的更多线程。例如,下面的程序创建了三个子线程:

// Create multiple threads. 
class NewThread implements Runnable { 
 String name; // name of thread 
 Thread t; 
 NewThread(String threadname) { 
 name = threadname; 
 t = new Thread(this, name); 
 System.out.println("New thread: " + t); 
 t.start(); // Start the thread 
 } 
 // This is the entry point for thread. 
 public void run() { 
 try { 
 for(int i = 5; i > 0; i--) { 
 System.out.println(name + ": " + i); 
 Thread.sleep(1000); 
 } 
 } catch (InterruptedException e) { 
 System.out.println(name + "Interrupted"); 
 } 
 System.out.println(name + " exiting."); 
 } 
} 
class MultiThreadDemo { 
 public static void main(String args[]) { 
 new NewThread("One"); // start threads 
 new NewThread("Two"); 
 new NewThread("Three"); 
 try { 
 // wait for other threads to end 
 Thread.sleep(10000); 
 } catch (InterruptedException e) { 
 System.out.println("Main thread Interrupted"); 
 } 
 System.out.println("Main thread exiting."); 
 } 
}

程序输出如下所示:

New thread: Thread[One,5,main] 
New thread: Thread[Two,5,main] 
New thread: Thread[Three,5,main] 
One: 5 
Two: 5 
Three: 5 
One: 4 
Two: 4 
Three: 4 
One: 3 
Three: 3 
Two: 3 
One: 2 
Three: 2 
Two: 2 
One: 1 
Three: 1 
Two: 1 
One exiting. 
Two exiting. 
Three exiting. 
Main thread exiting. 

如你所见,一旦启动,所有三个子线程共享CPU。注意main()中对sleep(10000)的调用。这使主线程沉睡十秒确保它最后结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值