多线程之 Runnable接口
一.多线程实现的第二种方式
1.定义类,实现Runnable接口
2.重写接口中的run方法,要在run方法中定义线程要执行的任务
public class MyRunnableImpl implements Runnable{ //run方法线程要执行的任务 @Override public void run() { System.out.println(Thread.currentThread().getName() + "执行了"); for(int i = 1; i <= 1000; i++) { System.out.println("HelloJava:" + i); } } }
3.在测试类中创建Runnable接口的实现类对象
4.创建一个Thread线程对象,并且构造方法位置传递Runnable接口的实现类对象,表示该线程要执行此任务
5.调用Thread对象的start方法,开始线程,让线程去运行
public class Demo04Runnable { public static void main(String[] args) { //在测试类中创建Runnable接口的实现类对象。 MyRunnableImpl r = new MyRunnableImpl(); //创建一个Thread线程对象,并且在构造方法位置传递Runnable接口的实现类对象, //表示该线程要执行此任务 Thread t = new Thread(r); //表示线程t对象要执行的任务是r中的run方法 //调用线程对象的start方法 t.start(); for(int i = 1; i <= 1000; i++) { System.out.println("HelloWorld:" + i); } } }
上面代码会执行: 1.main方法中for循环,
2.MyRunnableImpl实现类中run方法中代码块
二.Thread类和Runnable接口的区别
1.多线程有两种实现方式:
a. 继承Thread类;
b. 实现Runnable接口
2.Thread类和Runnable比较,Runnable更好一些
a. 实现Runnable接口的方式可以解决java中类与类之间只能单继承的局限性
b. 降低类的耦合性(关联性)
c. Runnable接口中只有一个run方法,没有start, setName, getName其他的这些方法,我们只需要在里面关注要执行的任务既可,这样这个功能就更加纯粹,更加专一,符合设计模式中的单一职责原则
d. 有利于实现多个线程之间的数据共享
posted on 2018-09-04 08:29 shaoshuai888 阅读(215) 评论(0) 编辑 收藏 举报