Java8使用实现Runnable接口方式创建新线程的方法
环境介绍
JDK版本:1.8
开发架构:spring boot 2.x
日志:slf4j
实现步骤
Runnable接口中只有一个run()方法,它是非Thread类子类的类提供的一种激活方式。一个类实现Runnable接口后,并不代表该类是一个“线程”类,不能直接运行,必须通过Thread实例才能创建并运行线程。
通过Runnable接口创建线程的步骤如下:
1、定义实现Runnable接口的类,并实现该类中的run()方法。
2、建立一个Thread对象,并将实现的Runnable接口的类的对象作为参数传入Thread类的构造方法。
3、通过Thread类中的start()方法启动线程,并运行。
Runnable实现类代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Runnable实现类
*/
public class ImportAddWeatherTaskAction implements Runnable {
//日志
private final static Logger logger = LoggerFactory.getLogger(ImportAddWeatherTaskAction.class);
//定义线程
private Thread t;
private String threadName;
//构造函数
public ImportAddWeatherTaskAction(String threadName) {
this.threadName = threadName;
} public void start() {
if (t == null) {
t = new Thread (this, threadName);
t.start();
}
} public void run(){
logger.info("线程开始运行:" + threadName);
//这里写在新线程中要实现的逻辑
logger.info("线程执行结束!");
}
}
调用线程实现类
/**
* 调用线程实现类(在其他服务实现类中编写此方法)
*/
public String importAddWeatherData(){
//实现化
ImportAddWeatherTaskAction R1 = new ImportAddWeatherTaskAction("线程名称");
R1.start();
return "线程已启动...";
}
Java8使用实现Runnable接口方式创建新线程的方法的更多相关文章
- 03_线程的创建和启动_实现Runnable接口方式
[线程的创建和启动的步骤(实现Runnable接口方式)] 1.定义Runnable接口的实现类,并重写其中的run方法.run()方法的方法体是线程执行体. class SonThread imp ...
- java多线程--实现Runnable接口方式
因为java类只能继承一个类可以实现多个接口的特性,所以一般情况下不推荐使用继承Thread类实现多线程,下面是实现Runnable接口方式的简单多线程代码 package text; /** * 多 ...
- 廖雪峰Java11多线程编程-1线程的概念-2创建新线程
Java语言内置多线程支持: 一个Java程序实际上是一个JVM进程 JVM用一个主线程来执行main()方法 在main()方法中又可以启动多个线程 1.创建新线程 1.1 方法一:使用Thread ...
- Java基础 继承的方式创建多线程 / 线程模拟模拟火车站开启三个窗口售票
继承的方式创建多线程 笔记: /**继承的方式创建多线程 * 线程的创建方法: * 1.创建一个继承于Thread 的子类 * 2.重写Thread类的run()方法 ,方法内实现此子线程 要完成的功 ...
- Java通过实现Runnable接口来创建线程
创建一个线程,最简单的方法是创建一个实现Runnable接口的类. 为了实现Runnable,一个类只需要执行一个方法调用run(),声明如下: public void run() 你可以重写该方法, ...
- Thread 和 Runnable创建新线程的区别,Runnable可以共享线程类的实例属性
Thread实现多线程: public class Thread2 extends Thread{ public int i; public void run(){ for(; i < 100 ...
- 实现Runnable接口方式
package com.roocon.thread.t2; public class Demo2 implements Runnable { @Override public void run() { ...
- 多线程编程之Windows环境下创建新线程
转自: http://www.cnblogs.com/lgxqf/archive/2009/02/10/1387480.html 在 Win32 API 中,创建线程的基本函数是 CreateThre ...
- Spark无法创建新线程
Spark提交程序报错,无法创建新的线程 原因是因为这台公用机器上跑的进程太多了,需要修改Linux参数,允许用户最大进程数 查看允许用户最大进程数配置 ulimit -a 修改允许用户最大进程数配置 ...
随机推荐
- 高精度乘法模板(luogu1303)
洛谷1303 //luogu1303,不压位的高精度乘法 #include <cstdio> #include <iostream> using namespace std; ...
- cf 1263
A #include<bits/stdc++.h> using namespace std; int main(){ int t;cin>>t; while(t--){ ]; ...
- StrictMode 严格模式
StrictMode: 帮助程序员避免在主线程上执行耗时操作: 启动级别: 1. 启动线程级别: setThreadPolicy() 2. 启动应用级别 : setVmPolicy() —— 对 ...
- moment.js 时间库
一.概念: https://www.cnblogs.com/Jimc/p/10591580.html 或 http://momentjs.cn/(官网) 1.Moment.js是一个 ...
- [CSP-S模拟测试]:Lost My Music(凸包)
题目描述 小$w$在天堂看到了一棵世界树.世界树上有$n$个节点,其中$1$节点为根,每个节点有一个正整数权值$c_i$.现在小$w$想要对每个节点$u$求出它的祖先$v$中$\frac{c_v-c_ ...
- Gym-100676E Time Limit Exceeded?
原题链接 https://odzkskevi.qnssl.com/1110bec98ca57b5ce6aec79b210d2849?v=1491063604 ********************* ...
- Hive date_trunc函数
The function date_trunc is conceptually similar to the trunc function for numbers. date_trunc('field ...
- 信息安全-OAuth2.0:NuGetFromMicrosoft
ylbtech-信息安全-OAuth2.0:NuGetFromMicrosoft 1.返回顶部 1. https://login.microsoftonline.com/common/oauth2/v ...
- js 判断对象的长度
Object.size = function(obj) { var size = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)) siz ...
- WireShark 自带工具 editcap 和 text2pcap 配合完成改包操作
一.拆包 首先声明这种方法比较复杂而且需要点技术水平,不建议菜鸟尝试(可以使用WireEdit编辑pcap包,不过要联网)其实在熟练这种方法后也可以很快的,但这种方法主要还是方便吧,不用下载其他什么软 ...