Java 多线程传值的四种方法
作者:sunjs 发布时间:2022-02-03 08:16:44
标签:Java,多线程,传值
其实大家都知道多线程传值有三种方式:
1:通过构造方法传递数据
2:通过变量和方法传递数据
3:通过回调函数传递数据
那么博主有个非常变态的需求,所以找出了第四种实现方式,先看效果图:
动态Cron4j调度器,我曾经发过类似的文章,可以去搜索一下.
点击执行走下边的代码,然后根据类名反编译
public static void executeCron4j(String packageClass){
try {
Object taskObj = classNewInstance(packageClass);
/** 只接受Runnable的定时器 **/
if (taskObj instanceof Runnable) {
Runnable task = (Runnable)taskObj;
Thread t1 = new Thread(new Runnable() {
public void run() {
task.run();
}
});
t1.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
线程类:(注意:线程要和上边设置的包名一致)
public void run() {
TCron4j cron4j = TCron4j.dao.findByClass(this.getClass().getName());//根据包名反编译,然后查询数据库
}
现在博主的需求是:有可能在同一个线程类执行不一样的程序。
上边两个红框中的cron4j调度器使用的是一个,根据参数不同来执行的。如果我点击后边的手动执行一次,按照我上边给出的java代码是无法实现的。
看下边的新的代码:
public static void executeCron4j(String packageClass){
try {
Object taskObj = classNewInstance(packageClass);
/** 只接受Runnable的定时器 **/
if (taskObj instanceof Runnable) {
Runnable task = (Runnable)taskObj;
Thread t1 = new Thread(new Runnable() {
public void run() {
task.run();
}
});
t1.setName("uuid");//这个是线程的名字
t1.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
从上边的代码可以看出,第四种传值方式是通过设置线程的名字来操作的。
这个名字你可以传一个id,然后去数据库查询更多的参数。
public void run() {
TCron4j cron4j = TCron4j.dao.findByUUID(Thread.currentThread().getName());//根据线程名字查询数据库
}
这种方式完美的解决了博主的难题。现在共享出来分享给大家!!!
来源:https://www.sunjs.com/article/detail/e2f95bf4a7974870ab1848063bf55ffc.html


猜你喜欢
- 本文所述为C#实现根据指定容器和控件名字获得控件的方法,在进行C#应用程序设计时有一定的借鉴价值。分享给大家供大家参考借鉴。具体实现方法如下
- 在进行详解之前,我想先声明一下,本次我们进行讲解说明的是 Kafka 消息存储的信息文件内容,不是所谓的 Kafka 服务器运行产生的日志文
- 算法概述/思路归并排序是基于一种被称为“分治”(divide and conquer)的策略。其基本思路是这样的:1.对于两个有序的数组,要
- 字符串遍历String str = "asdfghjkl";1.for(int i=0;i<str.length(
- 本文实例讲述了Java ThreadLocal类应用。分享给大家供大家参考,具体如下:一 点睛ThreadLocal,是Thread Loc
- 前言注解(Annotation)不是程序,但可以对程序作出解释,也可以被其它程序(如编译器)读取。注解的格式:以@注释名在代码中存在,还可以
- 前言最近都是Mybatis-Plus系列的小白文,算是对工作中最常使用的框架的细节扫盲。有在学习Mybatis-Plus使用的,可以关注一波
- 看完我上一篇文章,「你都理解创建线程池的参数吗?」之后,当遇到这种问题,你觉得你完全能够唬住面试官了,50k轻松到手。殊不知,要是面试官此刻
- Java Json的各种处理一、net.sf.json1、Json转MapJSONObject jsonObject = JSONObjec
- 最近刚换了电脑,开始搭建Android开发环境的时候,下载SDK总是会出现如下错误:Failed to fetch URL http://d
- 一、访问控制url匹配在前面讲解了认证中所有常用配置,主要是对http.formLogin()进行操作。而在配置类中 http.author
- stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,瞬
- 项目结构这个是在网上找的资源,出处记不得了,记录一下。程序的总体结构,很简单的:核心代码代码如下:ArrComparator.java类im
- 一. 接口文档概述swagger是当下比较流行的实时接口文文档生成工具。接口文档是当前前后端分离项目中必不可少的工具,在前后端开发之前,后端
- 本文的目的是要实现左右滑动的指引效果。那么什么是指引效果呢?现在的应用为了有更好的用户体验,一般会在应用开始显示一些指引帮助页面,使用户能更
- 本文实例讲述了Android实现取消GridView中Item选中时默认的背景色。分享给大家供大家参考,具体如下:1. 取消Gr
- 问题描述在开发批量删除功能时,往往都是多条数据,所以前台需要传一个数组给后台,但是怎么在URL中绑定一个数组,同时在后台用@PathVari
- 目录前言1、饿汉式(线程安全)⭐2、懒汉式(线程不安全)⭐3、懒汉式(加锁)4、懒汉式(双重校验锁)⭐5、单例模式(静态内部类)6、单例模式
- Logback简介1、logback和log4j是同一个作者,logback可以看作是log4j的升级版2、logback分为三个模块, l
- 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP。所以把一个练手项