当前课程知识点:JAVA程序设计进阶 > 第一章 线程(上) > 1.5 通过Runnable接口创建线程 > Video
我们知道创建JAVA线程
有两种方式
刚才我们已经介绍完第一种方式
下面这一节我们介绍第二种方式
通过Runnable接口来创建线程
那Runnable接口里面
只有一个方法就是run方法
所以说从实现接口的
这个角度来说
你只需要实现run方法就可以了
那我们之前碰到的Thread类
实际上它也是实现了
Runnable接口
那采用Runnable接口
来构造线程的话
它有个好处是便于
多个线程之间共享资源
另外由于我们的JAVA
在语法上不支持多重继承
如果我们定义的某个类
已经继承了其它类的话
同时你又想让它实现线程的功能
那你就可以让它去实现
接口Runnable
对于线程的话它的启动
还是用start方法来去启动
我们可以换成
用Runnable接口的方式
来实现一下上面的那个例子
那我们这个例子是这样的
public class
FactorialThreadTester
然后我们看一下主方法
主方法里面的第二行
就是FactorialThread t
=new FactorialThread10
那这个方法
我们是构造了一个这个线程
那这个线程只不过是它这个类
它本身是实现了
Runnable这个接口
紧接着再去调用这个线程
就是new Thread t.start
让它进行启动
那我们看具体这个类
是怎么定义的
class FactorialFhread
implements Runnable
这个类实现了接口Runnable
那实现了接口的话
就要求说你一定要实现run方法
那在这个run方法里面的话
大家可以看到
把这些你想执行的代码
都放进去了
那刚才是用Runnable接口
实现一个单一线程的例子
那我们下面再看一看
用Runnable接口
实现多个线程的例子是怎么样的
我们看这个代码
public class
ThreadSleep Tester
我们看这个主方法
主方法里面构造了三个线程
thread1 thread2 thread3
是它的类型是TestThread
然后紧接着打印出来说
线程启动了 然后三个线程
调用它的start方法来进行启动
最后的话就是我们的输出
线程已经结束了
我们来看一下TestThread这个类
是怎么实现的
它最主要是实现了接口Runnable
那在它这个类里面定义了
私有的成员变量sleepTime
然后在它的构造方法里面
去随机生成了一个随机数
然后0到6000毫秒
然后把它复制
给我们的sleepTime
我们再看它的run方法
那在run方法里面
只要是打印出线程的名字
以及它要计划休眠的时间
紧接着这个线程调用sleep方法
来去进行休眠
那其实我们这个例子
是为了说明说
如何用Runnable接口
来去实现 去构造我们的线程
我们可以比较一下
两种线程构造方式
使用Runnable接口
来构造线程的话
它有一个很大的好处
就相当于把CPU代码和数据分开
形成一个非常清晰的模型
那实际上Runnable接口中
我们所实现的这些run方法
就是我们这个线程
想要执行的代码
那另外一个好处就是说
由于JAVA是单一继承
那我们通过实现
Runnable接口的同时
还可以这个继承其它的类
那另外一种构造方式
就是通过直接继承Thread类
来去构造线程
那它的好处就是编写简单
它直接继承Thread类
然后重写run方法
把我们线程当中
想要执行的代码
直接就放到run方法里面
当然它的不好的地方是什么呢
可能我们这个线程
想继承其它类
但是由于我们继承了Thread类
就不能继承其它类
这是我们采用直接继承Thread类
来构造线程它的一个不好的地方
这一节我们介绍了
如何使用Runnable接口
来创建线程
并且和上面一种方法进行了比较
这就是本节的内容
-1.0 导学
--Video
-1.1 线程的基本概念
--Video
-1.1 线程的基本概念--作业
-1.2 通过Thread类创建线程
--Video
-1.2 通过Thread类创建线程--作业
-1.3 线程的休眠
--Video
-1.3 线程的休眠--作业
-1.4 Thread类详解
--Video
-1.5 通过Runnable接口创建线程
--Video
-1.5 通过Runnable接口创建线程--作业
-1.6 线程内部的数据共享
--Video
-2.0 导学
--Video
-2.1 线程同步的思路
--Video
-2.2 线程同步的实现方式—Synchronization
--Video
-2.3 线程的等待与唤醒
--Video
-2.4 后台进程
--Video
-2.5 线程的生命周期与死锁
--Video
-2.6 线程的调度
--Video
-3.0 导学
--Video
-3.1 线程安全与线程兼容与对立
--Video
-3.2 线程的安全实现-互斥同步
--Video
-3.3 线程的安全实现-非阻塞同步
--Video
-3.4 线程的安全实现-无同步方案
--Video
-3.5 锁优化
--Video
-4.0 导学
--Video
-4.1 URL对象
--Video
-4.2 URLConnection对象
--Video
-4.3 Get请求与Post请求
--Video
-4.4 Socket通信原理
--Video
-4.5 Socket通信实现
--Video
-5.0 导学
--Video
-5.1 Socket 多客户端通信实现
--Video
-5.2 数据报通信
--Video
-5.3 使用数据报进行广播通信
--Video
-5.4 网络聊天程序
--Video
-6.0 导学
--Video
-6.1 Java虚拟机概念
--Video
-6.2 Java虚拟机内存划分
--Video
-6.3 Java虚拟机类加载机制
--Video
-6.4 判断对象是否存活算法及对象引用
--Video
-6.5 分代垃圾回收
--Video
-6.6 典型的垃圾收集算法
--Video
-6.7典型的垃圾收集器
--Video
-7.0 导学
--Video
-7.1 集合框架与ArrayList
--Video
-7.2 LinkedList
--Video
-7.3 HashMap与HashTable
--Video
-7.4 TreeMap与LinkedHashMap
--Video
-7.5 HashSet
--Video
-8.0 导学
--Video
-8.1 Java反射机制
--Video
-8.2 Java静态代理
--Video
-8.3 Java动态代理
--Video
-8.4 Java 反射扩展-jvm加载类原理
--Video
-8.5 Java进阶课程总结
--Video