1. 多线程概述
要实现多线程可以通过继承Thread和实现Runnable接口。不过这两者之间存在一些区别。其中最重要的区别就是,如果一个类继承Thread类,则不适合于多个线程共享资源,而实现了Runnable接口,就可以方便地实现资源的共享。其实细说起来并不是能不能资源共享的事情,是因为继承Thread和实现Runnable接口这两种方式新建的任务数本身就是不同的,线程与任务的对应机制也是不同的。
范例1:继承Thread类
创建了多个thread,相当于创建了多个任务,每个任务交由一个thread来完成。
1 package test; 2 3 public class MyThreadDemo1 { 4 public static void main(String args[]) { 5 MyThread1 mt1 = new MyThread1(); 6 MyThread1 mt2 = new MyThread1(); 7 MyThread1 mt3 = new MyThread1(); 8 mt1.start(); 9 mt2.start(); 10 mt3.start(); 11 } 12 13 static class MyThread1 extends Thread { 14 private int ticket = 5; 15 16 @Override 17 public void run() { 18 // TODO Auto-generated method stub 19 for (int i = 0; i < 100; i++) 20 if (ticket > 0)// 当余票大于0则买票 21 { 22 System.out.println("卖一张票:剩余ticket=" + --ticket); // 这里--ticket表示卖了一张票后的余票 23 } 24 } 25 } 26 }
程序运行结果:
卖票:剩余ticket=5 卖票:剩余ticket=4 卖票:剩余ticket=3 卖票:剩余ticket=2 卖票:剩余ticket=1 卖票:剩余ticket=5 卖票:剩余ticket=4 卖票:剩余ticket=3 卖票:剩余ticket=5 卖票:剩余ticket=4 卖票:剩余ticket=3 卖票:剩余ticket=2 卖票:剩余ticket=1 卖票:剩余ticket=2 卖票:剩余ticket=1