您的位置:首页 > 编程语言 > Java开发

java 多线程 常规实现方法

2017-05-11 22:27 267 查看


Thread和Runnable的多线程示例


1. Thread的多线程示例

下面通过示例更好的理解Thread和Runnable,借鉴网上一个例子比较具有说服性的例子。

1 // ThreadTest.java 源码
2 class MyThread extends Thread{
3     private int ticket=10;
4     public void run(){
5         for(int i=0;i<20;i++){
6             if(this.ticket>0){
7                 System.out.println(this.getName()+" 卖票:ticket"+this.ticket--);
8             }
9         }
10     }
11 };
12
13 public class ThreadTest {
14     public static void main(String[] args) {
15         // 启动3个线程t1,t2,t3;每个线程各卖10张票!
16         MyThread t1=new MyThread();
17         MyThread t2=new MyThread();
18         MyThread t3=new MyThread();
19         t1.start();
20         t2.start();
21         t3.start();
22     }
23 }


运行结果

Thread-0 卖票:ticket10
Thread-1 卖票:ticket10
Thread-2 卖票:ticket10
Thread-1 卖票:ticket9
Thread-0 卖票:ticket9
Thread-1 卖票:ticket8
Thread-2 卖票:ticket9
Thread-1 卖票:ticket7
Thread-0 卖票:ticket8
Thread-1 卖票:ticket6
Thread-2 卖票:ticket8
Thread-1 卖票:ticket5
Thread-0 卖票:ticket7
Thread-1 卖票:ticket4
Thread-2 卖票:ticket7
Thread-1 卖票:ticket3
Thread-0 卖票:ticket6
Thread-1 卖票:ticket2
Thread-2 卖票:ticket6
Thread-2 卖票:ticket5
Thread-2 卖票:ticket4
Thread-1 卖票:ticket1
Thread-0 卖票:ticket5
Thread-2 卖票:ticket3
Thread-0 卖票:ticket4
Thread-2 卖票:ticket2
Thread-0 卖票:ticket3
Thread-2 卖票:ticket1
Thread-0 卖票:ticket2
Thread-0 卖票:ticket1


结果说明
(01) MyThread继承于Thread,它是自定义个线程。每个MyThread都会卖出10张票。
(02) 主线程main创建并启动3个MyThread子线程。每个子线程都各自卖出了10张票。

 


2. Runnable的多线程示例

下面,我们对上面的程序进行修改。通过Runnable实现一个接口,从而实现多线程。

1 // RunnableTest.java 源码
2 class MyThread implements Runnable{
3     private int ticket=10;
4     public void run(){
5         for(int i=0;i<20;i++){
6             if(this.ticket>0){
7                 System.out.println(Thread.currentThread().getName()+" 卖票:ticket"+this.ticket--);
8             }
9         }
10     }
11 };
12
13 public class RunnableTest {
14     public static void main(String[] args) {
15         MyThread mt=new MyThread();
16
17         // 启动3个线程t1,t2,t3(它们共用一个Runnable对象),这3个线程一共卖10张票!
18         Thread t1=new Thread(mt);
19         Thread t2=new Thread(mt);
20         Thread t3=new Thread(mt);
21         t1.start();
22         t2.start();
23         t3.start();
24     }
25 }


运行结果

Thread-0 卖票:ticket10
Thread-2 卖票:ticket8
Thread-1 卖票:ticket9
Thread-2 卖票:ticket6
Thread-0 卖票:ticket7
Thread-2 卖票:ticket4
Thread-1 卖票:ticket5
Thread-2 卖票:ticket2
Thread-0 卖票:ticket3
Thread-1 卖票:ticket1


结果说明
(01) 和上面“MyThread继承于Thread”不同;这里的MyThread实现了Runnable接口。
(02) 主线程main创建并启动3个子线程,而且这3个子线程都是基于“mt这个Runnable对象”而创建的。运行结果是这3个子线程一共卖出了10张票。这说明它们是共享了MyThread接口的。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 Thread