java多线程学习二:两种实现多线程方式的对比

来源:互联网 发布:民航航线图数据下载 编辑:程序博客网 时间:2024/09/21 06:35

模拟售票

结论:一个对象只能启动一个线程,无论你调用多少遍start()方法,结果只有一个线程

示例一

package myk;public class ThreadDemo1 {public static void main(String[] args) {TestThread tt = new TestThread();tt.start();tt.start();tt.start();tt.start();tt.start();}}class TestThread extends Thread{private int tickets = 10;public void run(){while(true){if(tickets>0){System.out.println(Thread.currentThread().getName()+" is sailing ticket " + tickets--);}}}}//result//Thread-0 is sailing ticket 10//Thread-0 is sailing ticket 9//Thread-0 is sailing ticket 8//Thread-0 is sailing ticket 7//Thread-0 is sailing ticket 6//Thread-0 is sailing ticket 5//Thread-0 is sailing ticket 4//Thread-0 is sailing ticket 3//Thread-0 is sailing ticket 2//Thread-0 is sailing ticket 1

示例二

结论:四个线程分别卖各自的10张票,不是卖共同的10张票
public class ThreadDemo1 {public static void main(String[] args) {new TestThread().start();new TestThread().start();new TestThread().start();new TestThread().start();new TestThread().start();}}class TestThread extends Thread{private int tickets = 10;public void run(){while(true){if(tickets>0){System.out.println(Thread.currentThread().getName()+" is sailing ticket " + tickets--);}}}}//result//Thread-0 is sailing ticket 1//Thread-1 is sailing ticket 10//Thread-1 is sailing ticket 9//Thread-1 is sailing ticket 8//Thread-1 is sailing ticket 7//Thread-1 is sailing ticket 6//Thread-1 is sailing ticket 5//Thread-1 is sailing ticket 4//Thread-1 is sailing ticket 3//Thread-2 is sailing ticket 10//Thread-3 is sailing ticket 10//Thread-4 is sailing ticket 10//Thread-1 is sailing ticket 2

示例三

结论:
使用runnable有以下好处
1.适合多个相同程序代码的线程去处理同一资源的情况。
2.可以避免由于java的单继承性带来的局限性。
3.有利于程序的健壮性,代码能够被多个线程共享,代码与数据是独立的。
public class ThreadDemo1 {public static void main(String[] args) {TestThread tt = new TestThread();new Thread(tt).start();new Thread(tt).start();new Thread(tt).start();new Thread(tt).start();new Thread(tt).start();}}class TestThread implements Runnable{private int tickets = 100;public void run(){while(true){if(tickets>0){System.out.println(Thread.currentThread().getName()+" is sailing ticket " + tickets--);}}}}//result//Thread-0 is sailing ticket 100//Thread-0 is sailing ticket 99//Thread-0 is sailing ticket 98//Thread-0 is sailing ticket 97//Thread-0 is sailing ticket 96//Thread-0 is sailing ticket 95//Thread-0 is sailing ticket 94//Thread-0 is sailing ticket 93//Thread-0 is sailing ticket 92//Thread-0 is sailing ticket 91//Thread-0 is sailing ticket 90//Thread-0 is sailing ticket 89//Thread-0 is sailing ticket 88//Thread-0 is sailing ticket 87//Thread-0 is sailing ticket 86//Thread-0 is sailing ticket 85//Thread-0 is sailing ticket 84//Thread-1 is sailing ticket 83//Thread-2 is sailing ticket 82//Thread-3 is sailing ticket 81//Thread-4 is sailing ticket 80//Thread-0 is sailing ticket 79//Thread-1 is sailing ticket 78//Thread-2 is sailing ticket 77//Thread-3 is sailing ticket 76//Thread-4 is sailing ticket 75//Thread-0 is sailing ticket 74//Thread-1 is sailing ticket 73//Thread-2 is sailing ticket 72//Thread-3 is sailing ticket 71//Thread-4 is sailing ticket 70//Thread-0 is sailing ticket 69//Thread-1 is sailing ticket 68//Thread-2 is sailing ticket 67//Thread-3 is sailing ticket 66//Thread-4 is sailing ticket 65//Thread-0 is sailing ticket 64//Thread-1 is sailing ticket 63//Thread-2 is sailing ticket 62//Thread-3 is sailing ticket 61//Thread-4 is sailing ticket 60//Thread-0 is sailing ticket 59//Thread-1 is sailing ticket 58//Thread-2 is sailing ticket 57//Thread-3 is sailing ticket 56//Thread-0 is sailing ticket 55//Thread-1 is sailing ticket 54//Thread-2 is sailing ticket 53//Thread-3 is sailing ticket 52//Thread-0 is sailing ticket 51//Thread-1 is sailing ticket 50//Thread-2 is sailing ticket 49//Thread-4 is sailing ticket 48//Thread-3 is sailing ticket 47//Thread-0 is sailing ticket 46//Thread-1 is sailing ticket 45//Thread-2 is sailing ticket 44//Thread-4 is sailing ticket 43//Thread-3 is sailing ticket 42//Thread-0 is sailing ticket 41//Thread-1 is sailing ticket 40//Thread-2 is sailing ticket 39//Thread-4 is sailing ticket 38//Thread-3 is sailing ticket 37//Thread-0 is sailing ticket 36//Thread-1 is sailing ticket 35//Thread-2 is sailing ticket 34//Thread-4 is sailing ticket 33//Thread-3 is sailing ticket 32//Thread-0 is sailing ticket 31//Thread-1 is sailing ticket 30//Thread-4 is sailing ticket 29//Thread-3 is sailing ticket 28//Thread-0 is sailing ticket 27//Thread-1 is sailing ticket 26//Thread-4 is sailing ticket 25//Thread-3 is sailing ticket 24//Thread-0 is sailing ticket 23//Thread-1 is sailing ticket 22//Thread-2 is sailing ticket 21//Thread-3 is sailing ticket 20//Thread-0 is sailing ticket 19//Thread-1 is sailing ticket 18//Thread-2 is sailing ticket 17//Thread-3 is sailing ticket 16//Thread-0 is sailing ticket 15//Thread-4 is sailing ticket 14//Thread-2 is sailing ticket 13//Thread-3 is sailing ticket 12//Thread-0 is sailing ticket 11//Thread-4 is sailing ticket 10//Thread-2 is sailing ticket 9//Thread-1 is sailing ticket 8//Thread-3 is sailing ticket 7//Thread-4 is sailing ticket 6//Thread-2 is sailing ticket 5//Thread-1 is sailing ticket 4//Thread-3 is sailing ticket 3//Thread-4 is sailing ticket 2//Thread-2 is sailing ticket 1