【常用API】之Runnable实现多线程
Runnable实现多线程,与Thread多线程的区别在于,Thread是继承Thread父类,而Runnable是接口,需要实现Runnable接口,但是两者都是需要重写run()方法,在执行任务之后,都无法获取执行结果的。
Runnable接口实现多线程
1 //主程序,里面开启运行多个线程 2 public class _Runnable多线程{ 3 public static void main(String[] args){ 4 5 //第一步:多态,声明接口,实例化实现类,得到对象 6 Thread1 r1 = new Thread1(); 7 Thread2 r2 = new Thread2(); 8 Thread3 r3 = new Thread3(); 9 10 //第二步:创建线程对象,将实现类对象放入线程对象,实现Runnable重写方法后,最终还是需要创建Thread类运行 11 Thread t1 = new Thread(r1); 12 Thread t2 = new Thread(r2); 13 Thread t3 = new Thread(r3); 14 15 //第三步:调用start()方法; 16 t1.start(); 17 t2.start(); 18 t3.start(); 19 20 } 21 } 22 23 24 25 26 27 //======================================= 28 //java提供了一个 Runnable接口, 29 //里面有一个抽象方法 run 30 //1、自定义类,实现Runnable接口 31 //2、重写run方法 32 //3、实例化对象 33 //4、调用start方法 34 35 // 【显示接口,只是一个接口的实现类】 36 //创建几个线程 37 38 //线程1 39 class Thread1 implements Runnable{ 40 41 //重写run方法 42 @Override 43 public void run(){ 44 for(int i = 1; i<=5; i++){ 45 //休眠 46 try{ 47 Thread.currentThread().sleep(100); 48 }catch(InterruptedException e){ 49 System.out.println("当前操作系统禁止自定义线程休 50 眠!"); 51 } 52 //结果 53 System.out.println("t1->"+i); 54 } 55 56 } 57 58 } 59 60 61 62 //线程2 63 class Thread2 implements Runnable{ 64 65 @Override 66 public void run(){ 67 for(int i = 1; i<=5; i++){ 68 //休眠 69 try{ 70 Thread.currentThread().sleep(100); 71 }catch(InterruptedException e){ 72 System.out.println("当前操作系统禁止自定义线程休 73 眠!"); 74 } 75 //结果 76 System.out.println("t2->"+i); 77 } 78 79 } 80 81 } 82 83 84 //线程3 85 class Thread3 implements Runnable{ 86 87 @Override 88 public void run(){ 89 for(int i = 1; i<=5; i++){ 90 //休眠 91 try{ 92 Thread.currentThread().sleep(100); 93 }catch(InterruptedException e){ 94 System.out.println("当前操作系统禁止自定义线程休 95 眠!"); 96 } 97 //结果 98 System.out.println("t3->"+i); 99 } 100 101 } 102 103 } 104 105
唯一可以不劳而获的是贫穷,而唯一可以无中生有的是梦想。