一、创建线程的第一种方式:继承Thread类
class Demo extends Thread{ @Override public void run() { super.run(); for(int i=0;i<20;i++) System.out.println(Thread.currentThread()+"...."+i); } } public class ThreadDemo1 { public static void main(String[] args){ Demo d1 = new Demo(); Demo d2 = new Demo(); d1.start(); d2.start(); } }
二、创建线程的第二种方式:实现Runnable接口
class Demo2 implements Runnable{ public void run() { for(int i=0;i<20;i++) System.out.println(Thread.currentThread()+"..."+i); } } public class ThreadDemo2 { public static void main(String[] args) { Thread t1 = new Thread(new Demo2()); Thread t2 = new Thread(new Demo2()); t1.start(); t2.start(); } }
Runnable的出现仅仅是将线程的任务进行了对象的封装。
实现Runnable接口的好处:
1、将线程的任务从线程的子类中分离出来,进行单独的封装。按照面向对象的思想将任务封装成对象。
2、避免了Java单继承的局限性
所以第二种方法创建线程比较常用。
时间: 2024-10-29 12:39:40