其实大家都知道多线程传值有三种方式:

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());//根据线程名字查询数据库

}

这种方式完美的解决了博主的难题。现在共享出来分享给大家!!!

以上就是Java 多线程传值的四种方法的详细内容,更多关于Java 多线程传值的资料请关注云海天教程其它相关文章!

原文链接:https://www.sunjs.com/article/detail/e2f95bf4a7974870ab1848063bf55ffc.html

java多线程传值覆盖_Java 多线程传值的四种方法相关推荐

  1. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下: 1.int ...

  2. Java中字符串中子串的查找共有四种方法(indexof())

    2019独角兽企业重金招聘Python工程师标准>>> public class FirstDemo { /** *API中String的常用方法 */ // 查找指定字符串是否存在 ...

  3. java 数组效率_java数组复制的四种方法效率对比

    有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容. 来源于牛客网的一道选择题: JAVA语言的下面几种数组复制方法中,哪个效率最高? ...

  4. java互换_两个变量交换的四种方法(Java)

    对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. (代码演示一下) 1 class TestEV 2 //创建一个类 3 { 4 public ...

  5. Java求两集合中元素交集的四种方法对比总结

    hello,你好呀,我是灰小猿,一个超会写bug的程序猿! 最近在做项目的时候有用到对两个集合中的元素进行对比求其交集的情况,因为涉及到的数据量比较大,所以在进行求两个集合中元素交集的时候,就应该考虑 ...

  6. java list for循环_Java List遍历的3种方法

    Java List遍历的3种方法 1. Iterator遍历list集合 List list=new ArrayList(); list.add("java1"); list.ad ...

  7. java map 迭代遍历_java 遍历Map的四种方式

    java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...

  8. java字符串abc反转_JAVA字符串反转的三种方法

    方法一:使用StringBuilder import java.util.Scanner; public class StrReversal { public static void main(Str ...

  9. java 结束 线程结束_Java结束线程的三种方法(爱奇艺面试)

    线程属于一次性消耗品,在执行完run()方法之后线程便会正常结束了,线程结束后便会销毁,不能再次start,只能重新建立新的线程对象,但有时run()方法是永远不会结束的.例如在程序中使用线程进行So ...

最新文章

  1. 【Qt】错误GL/gl.h: No such file or directory的解决方法(以及cannot find -lGL解决方法)
  2. 王彪20162321 2016-2017-2 《程序设计与数据结构》第7周学习总结
  3. unigui 导入导出数据
  4. boa服务器如何运行cgi,嵌入式WEB服务器BOA+CGI.ppt
  5. 对acm icpc 的随笔——01
  6. NopCommerce 4.2的安装与运行
  7. python中lines是什么类型_Python中splitlines()方法的使用简介
  8. 推荐:全网最全的Java并发面试题及答案。
  9. android8 老手机,华为多款老旧手机获升安卓8.0,流畅度飙升!
  10. python基础知识 os.path.join()
  11. 数据生态mysql_数据生态:MySQL复制技术与生产实践
  12. python学习笔记-day6-【python如何写excel表】
  13. Intel初始化和模式切换示例
  14. Laravel深入学习3 - 接口约定
  15. ENVI学习总结(二)——基于自带定位信息的几何校正
  16. linux(ubuntu) 搭建java程序运行环境
  17. maven的常用指令
  18. 大众点评字体_【网络爬虫实战】解决大众点评搜索页面字体加密
  19. ORA-01033错误解决方法
  20. 如何低成本,有效地进行企业公众号拉新,获取10万+潜在用户? 黎想

热门文章

  1. 【jQuery】在表单提交前触发事件(数据校验/执行计算等)
  2. 什么?注释里面的代码居然能够执行
  3. Flume 1.6 遇Emoji表情发生截断丢失数据问题分析
  4. RunTime.getRunTime().addShutdownHook的用法
  5. Tomcat优化之配置线程池
  6. 使用velocity
  7. 分布式事务——TCC 原理
  8. 03.进程和线程.md
  9. [leetcode]剑指offer32-1.从上到下打印二叉树
  10. 为什么将老年代移动到方法区