创建多线程程序的第二种方式-实现Runnable接口和Thread和Runnable的区别
创建多线程程序的第二种方式-实现Runnable接口
java.lang. Runnable也是非吊军儿的一种,我们只需要重与run万法即可。
步骤如下∶
1.定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。
⒉创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。
3.调用线程对象的start()方法来启动线程。
public class Demo_Runnable implements Runnable{ @Override public void run() { for(int i = 0; i < 20; i++){ System.out.println(Thread.currentThread().getName()+"--》"+i); } } }
public static void main(String[] args) { Demo_Runnable demo_runnable = new Demo_Runnable(); Thread thread = new Thread(demo_runnable); thread.start(); for (int i = 0; i < 20; i++) { System.out.println(Thread.currentThread().getName()+"-->"+i); } }
// 创建线程2: 实现Runnable接口,重写run()方法,执行线程需要丢入的runnable接口实现类,调用start()方法。 public class TestThread3 implements Runnable { @Override public void run() { for (int i = 0; i < 100; i++) { // run方法线程体 System.out.println("我在看代码-----" + i); } } public static void main(String[] args) { // 创建Runnable接口的实现类对象 TestThread3 testThread3 = new TestThread3(); // 创建线程,对象通过线程对象开启线程 // Thread thread = new Thread(testThread3); // thread.start(); new Thread(testThread3).start(); for (int i = 0; i < 1000; i++) { System.out.println("我在学习多线程-----" + i); } } }
Thread和Runnable的区别
实现Runnable接口比继承Thread类所具有的优势
1.适合多个相同的程序代码的线程去共享同一个资源。
2.可以避兔java中的单继承的局限性。
3.增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和线程独立。
4.线程池只能放入实现Runable或Callable类线程,不能直接放入继承Thread的类。
实现Runnable接口创建多线程程序的好处:
1.避免了单继承的局限性
一个类只能继承一个类(士一个人只能有一个亲爹),类继承了Thread类就不能继承其他的类实现了Runnable接口,还可以继承其他的类,实现其他的接口
2.增强了程序的扩展性,降低了程序的耦合性(解耦)
实现Runnable接口的方式,把设置线程任务和开启新线程进行了分离(解耦)实现类中,重写了run方法:用来设置线程任务
创建Thread类对象,调用start方法:用来开启新线程
public class Demo_Runnabl implements Runnable{ @Override public void run() { for(int i = 0; i < 20; i++){ System.out.println("HelloWord"+i); } } }
public static void main(String[] args) { Demo_Runnable demo_runnable = new Demo_Runnable(); //Thread thread = new Thread(demo_runnable); Thread thread = new Thread(new Demo_Runnabl()); thread.start(); for (int i = 0; i < 20; i++) { System.out.println(Thread.currentThread().getName()+"-->"+i); } }

浙公网安备 33010602011771号