多线程之 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. 有利于实现多个线程之间的数据共享
多线程之 Runnable接口的更多相关文章
- 多线程——实现Runnable接口实现一个多线程
实现Runnable接口实现一个多线程 Runnable接口源码: package java.lang; //Runnable接口源码只有一个run方法 public interface Runnab ...
- java多线程--实现Runnable接口方式
因为java类只能继承一个类可以实现多个接口的特性,所以一般情况下不推荐使用继承Thread类实现多线程,下面是实现Runnable接口方式的简单多线程代码 package text; /** * 多 ...
- java多线程--实现Runnable接口
package unit8; import java.applet.Applet; import java.awt.Label; import java.awt.TextField; public c ...
- java中多线程中Runnable接口和Thread类介绍
java中的线程时通过调用操作系统底层的线程来实现线程的功能的. 先看如下代码,并写出输出结果. // 请问输出结果是什么? public static void main(String[] args ...
- 多线程-实现Runnable接口
当一个任务或者函数多个线程同时调用时仅仅继承Thread是不行的.需要实现Runnable接口. 好处: 1.将线程的任务从线程的子类中分离出来,进行了单独的封装. 按照面向对象的思想将任务封装成对象 ...
- Java Tread多线程(1)实现Runnable接口
作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39347245 本文演示,Tread多线程实现Runnable接口,以及简单 ...
- 多线程——实现Callable接口
前两篇博客(多线程--继承Thread类.多线程--实现Runnable接口 )介绍了java使用线程的两种方法.这篇博客继续介绍第三种方法--实现Callable接口. 先说一下Runnable和C ...
- Java通过继承thread类与实现Runnable接口实现多线程的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 一.通过继承T ...
- Java基础知识强化之多线程笔记05:Java中继承thread类 与 实现Runnable接口的区别
1. Java中线程的创建有两种方式: (1)通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中. (2)通过实现Runnable接口,实例化Thread类. 2. ...
随机推荐
- Java基础学习-计算机存储单元和数据类型概述
变量是内存中的小容器,用来存储数据.那么计算机内存是怎么存储数据的呢?无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写字母b表示.而计算机最小的存 ...
- CentOS7.5 下搭建SFTP
CentOS7.5 下搭建SFTP Linux 创建用户组 groupadd sftp 创建用户test useradd -G sftp -s /sbin/nologin test -s 禁止用户ss ...
- Multiple markers at this line - Missing semicolon时的解决方法
Myeclipse的web项目中的js文件报Multiple markers at this line - Missing semicolon时的解决方法 MyEclipse的web项目中的js文件报 ...
- MySQL自定义函数递归查询
用于递归查找Id(通过parentId关联)参数为int 类型的值: CREATE DEFINER=`root`@`%` FUNCTION `getChildList`(rootId INT) RET ...
- vue的一些随记
1.vue中在methods等中使用filters中的过滤器 this.$options.filters[filter](...args)
- npm ERR! File exists: /XXX/xxx npm ERR! Move it away, and try again.
今天抽空将我的静态服务 ks-server 之前留下的 bug(在node低版本情况下报错)维护了一下. 当我重新 npm link 时,如下错误: npm WARN ks-server@1.0.2 ...
- GC知识记录
2.关于Minor GC,Major GC与Full GC 1) Minor GC:即新生代的GC,指发生在新生代的垃圾收集动作.当新生代的Eden区内存不足时,就会触发Minor GC.由于对象创 ...
- MIUI6系统如何启用root权限的教程
MIUI6系统有没有办法启用了root权限?大家都清楚,Android机器有root权限,如果手机启用了root相关权限,就能够实现更好的功能,举例子,大家单位的营销部门同事,使用某些营销软件都需要在 ...
- (转)关于request.getServletPath(),request.getContextPath()的总结
文章完全转载自 : https://blog.csdn.net/qq_27770257/article/details/79438987 最近对于request中的几种“路径”有点混淆,查找网上资源都 ...
- HTML标记
html:超文本标记语言 标记,标签,元素 单标签:<标签名 属性名="属性值" 属性名=“属性值” /> 双标签:<标签名 属性名="属性值” 属 ...