Java(三)併發控制5.繼承建立執行緒和實現建立執行緒之間的區別
阿新 • • 發佈:2018-12-12
這是使用繼承建立的執行緒
class Person extends Thread { private int num=50; public Person(String name) { super(name); } public void run() { for(int i=1;i<=50;i++) { if(num>0) { System.out.println(Thread.currentThread().getName()+"吃了編號為"+num--+"的蘋果"); } } } } public class ExtendDemo { //建立3個執行緒吃蘋果 public static void main(String[] args) { new Person("小A").start(); new Person("小B").start(); new Person("小C").start(); } }
先用構造器public Person為父類建立name,我們好給執行緒起名字 而Thread.currentThread().getName(),自然就是得到執行緒名字 可以看出公共資源被使用了3次,然後同時執行 這是使用實現建立的執行緒
class Apple implements Runnable { private int num=50; public void run() { for(int i=1;i<=50;i++) { if(num>0) { System.out.println(Thread.currentThread().getName()+"吃了編號為"+num--+"的蘋果"); } } } } public class ImplementDemo { public static void main(String[] args) { //建立三個同學執行緒 Apple a=new Apple(); new Thread(a,"小楊").start(); new Thread(a,"小張").start(); new Thread(a,"小李").start(); } }
可以發現,公共資源只被使用了一次,由3個執行緒共同瓜分