学习笔记之JavaSE(23)--多线程3
2016-11-16 12:10
363 查看
今天学习的内容是通过实现Runnable接口创建线程
之前说过使用继承Thread类的方法创建线程,但是这种方法有弊端。下面介绍第二种创建线程的方法:定义一个实现Runnable接口的类(假设为MyRunnable类),并实现其中的run()方法,然后创建MyRunnable类的实例并将其作为Thread类的构造函数的参数,创建Thread对象,线程的任务也是定义在run()方法里面的,线程会自动执行MyRunnable实例的run()方法。
通过实现Runnable接口创建线程是常用方法,它的好处是:
将线程的任务从线程的子类中分离出来,进行了单独的封装,降低程序耦合性
避免了Java单继承的局限性
示例程序:
之前说过使用继承Thread类的方法创建线程,但是这种方法有弊端。下面介绍第二种创建线程的方法:定义一个实现Runnable接口的类(假设为MyRunnable类),并实现其中的run()方法,然后创建MyRunnable类的实例并将其作为Thread类的构造函数的参数,创建Thread对象,线程的任务也是定义在run()方法里面的,线程会自动执行MyRunnable实例的run()方法。
通过实现Runnable接口创建线程是常用方法,它的好处是:
将线程的任务从线程的子类中分离出来,进行了单独的封装,降低程序耦合性
避免了Java单继承的局限性
示例程序:
public class Test38 { public static void main(String[] args){ Thread t1 = new Thread(new MyRunnable()); Thread t2 = new Thread(new Runnable(){ //线程的任务(匿名内部类) public void run(){ for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+":i="+i); } } }); t1.setName("t1"); t2.setName("t2"); t1.start(); t2.start(); //主线程的任务 for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+":i="+i); } } } class MyRunnable implements Runnable{ public void run(){ for(int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+":i="+i); } } }
相关文章推荐
- 学习笔记_JavaSE_23_多线程的两种方式、安全问题、锁机制
- IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
- IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
- JavaSE学习笔记--多线程基础
- JavaSE基础学习笔记-多线程
- IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
- JAVASE学习笔记:第十三章 多线程和网络编程
- IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
- Android(java)学习笔记215:多线程断点下载的原理(JavaSE实现)
- iOS学习笔记-124.多线程23——多图下载3_第三种实现方式(使用SDWebImage)
- JavaSE学习笔记之多线程
- 学习笔记之JavaSE(25)--多线程5
- [置顶] JavaSE学习笔记_10:Java多线程
- IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
- 传智博客学习笔记10--多线程
- 多线程学习笔记 四
- 多线程学习笔记 一
- Spring学习笔记23
- Symbian学习笔记(6)——关于多线程与活动对象
- 学习笔记:第15课 多线程和聊天室程序