环境介绍

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接口方式创建新线程的方法的更多相关文章

  1. 03_线程的创建和启动_实现Runnable接口方式

    [线程的创建和启动的步骤(实现Runnable接口方式)] 1.定义Runnable接口的实现类,并重写其中的run方法.run()方法的方法体是线程执行体. class SonThread  imp ...

  2. java多线程--实现Runnable接口方式

    因为java类只能继承一个类可以实现多个接口的特性,所以一般情况下不推荐使用继承Thread类实现多线程,下面是实现Runnable接口方式的简单多线程代码 package text; /** * 多 ...

  3. 廖雪峰Java11多线程编程-1线程的概念-2创建新线程

    Java语言内置多线程支持: 一个Java程序实际上是一个JVM进程 JVM用一个主线程来执行main()方法 在main()方法中又可以启动多个线程 1.创建新线程 1.1 方法一:使用Thread ...

  4. Java基础 继承的方式创建多线程 / 线程模拟模拟火车站开启三个窗口售票

    继承的方式创建多线程 笔记: /**继承的方式创建多线程 * 线程的创建方法: * 1.创建一个继承于Thread 的子类 * 2.重写Thread类的run()方法 ,方法内实现此子线程 要完成的功 ...

  5. Java通过实现Runnable接口来创建线程

    创建一个线程,最简单的方法是创建一个实现Runnable接口的类. 为了实现Runnable,一个类只需要执行一个方法调用run(),声明如下: public void run() 你可以重写该方法, ...

  6. Thread 和 Runnable创建新线程的区别,Runnable可以共享线程类的实例属性

    Thread实现多线程: public class Thread2 extends Thread{ public  int i; public void run(){ for(; i < 100 ...

  7. 实现Runnable接口方式

    package com.roocon.thread.t2; public class Demo2 implements Runnable { @Override public void run() { ...

  8. 多线程编程之Windows环境下创建新线程

    转自: http://www.cnblogs.com/lgxqf/archive/2009/02/10/1387480.html 在 Win32 API 中,创建线程的基本函数是 CreateThre ...

  9. Spark无法创建新线程

    Spark提交程序报错,无法创建新的线程 原因是因为这台公用机器上跑的进程太多了,需要修改Linux参数,允许用户最大进程数 查看允许用户最大进程数配置 ulimit -a 修改允许用户最大进程数配置 ...

随机推荐

  1. 高精度乘法模板(luogu1303)

    洛谷1303 //luogu1303,不压位的高精度乘法 #include <cstdio> #include <iostream> using namespace std; ...

  2. cf 1263

    A #include<bits/stdc++.h> using namespace std; int main(){ int t;cin>>t; while(t--){ ]; ...

  3. StrictMode 严格模式

    StrictMode: 帮助程序员避免在主线程上执行耗时操作: 启动级别: 1. 启动线程级别:   setThreadPolicy() 2. 启动应用级别 :  setVmPolicy() —— 对 ...

  4. moment.js 时间库

    一.概念:    https://www.cnblogs.com/Jimc/p/10591580.html    或    http://momentjs.cn/(官网) 1.Moment.js是一个 ...

  5. [CSP-S模拟测试]:Lost My Music(凸包)

    题目描述 小$w$在天堂看到了一棵世界树.世界树上有$n$个节点,其中$1$节点为根,每个节点有一个正整数权值$c_i$.现在小$w$想要对每个节点$u$求出它的祖先$v$中$\frac{c_v-c_ ...

  6. Gym-100676E Time Limit Exceeded?

    原题链接 https://odzkskevi.qnssl.com/1110bec98ca57b5ce6aec79b210d2849?v=1491063604 ********************* ...

  7. Hive date_trunc函数

    The function date_trunc is conceptually similar to the trunc function for numbers. date_trunc('field ...

  8. 信息安全-OAuth2.0:NuGetFromMicrosoft

    ylbtech-信息安全-OAuth2.0:NuGetFromMicrosoft 1.返回顶部 1. https://login.microsoftonline.com/common/oauth2/v ...

  9. js 判断对象的长度

    Object.size = function(obj) { var size = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)) siz ...

  10. WireShark 自带工具 editcap 和 text2pcap 配合完成改包操作

    一.拆包 首先声明这种方法比较复杂而且需要点技术水平,不建议菜鸟尝试(可以使用WireEdit编辑pcap包,不过要联网)其实在熟练这种方法后也可以很快的,但这种方法主要还是方便吧,不用下载其他什么软 ...