/** * 线程类 * @author * @date 2018/7/31 16:04 */ public class MyThread extends Thread { private String name; public MyThread(String name) { this.name = name; } @Override public void run() { for (int i = 0; i < 8; i++) { System.out.println("name=" +name+":"+ i); } } }
/** * 测试类 * @author limh * @date 2018/7/31 16:07 */ public class TestMain { public static void main(String[] args){ //新建线程 MyThread t1 = new MyThread("A"); MyThread t2 = new MyThread("B"); //启动线程 t1.start(); t2.start(); } }
若是一个类继承Thread,则不适合资源共享。可是若是实现了Runnable接口的话,则很容易的实现资源共享。java
/** * Runnable类 * @author * @date 2018/7/31 16:15 */ public class MyThread1 implements Runnable { private int ticket = 10; @Override //公共资源,要在run方法以前加上synchronized,要否则会出现抢资源的状况 public synchronized void run() { for (int i=0;i<10;i++){ if (this.ticket > 0){ System.out.println("卖票:ticket"+this.ticket--); } } } }
/** * 测试类 * @author limh * @date 2018/7/31 16:07 */ public class TestMain { public static void main(String[] args){ //测试Runnable MyThread1 t1 = new MyThread1(); //同一个t1,资源共享。若是不是同一个,则达不到该效果 new Thread(t1).start(); new Thread(t1).start(); new Thread(t1).start(); } }
实现Runnable接口比继承Thread类所具备的优点:ide