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());//根据线程名字查询数据库 }
这种方式完美的解决了博主的难题。现在共享出来分享给大家!!!
以上就是Java 多线程传值的四种方法的详细内容,更多关于Java 多线程传值的资料请关注我们其它相关文章!
相关推荐
-
对Java中传值调用的理解分析
本文实例分析了Java中的传值调用.分享给大家供大家参考.具体分析如下: Java以引用的方式操作对象实例 可以确认的是Java中操作对象的方式是以引用的方式操作对象.为了更深刻的了解这点我写了如下代码: 首先定义一个自定义类型 复制代码 代码如下: public class Person { String name; Person(String name){ this.name = name; } } 这里name默认是
-
Java中的传值与传引用实现过程解析
java函数中的传值和传引用问题一直是个比较"邪门"的问题,其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中修改参数值时,无论是基本类型的参数还是引用类型的参数,修改的只是该参数的拷贝,不影响函数实参的值,如果修改的是引用类型的成员值,则该实参引用的成员值是可以改变的,例子如下. 首先是定义改变参数的 public static void changeInt(int i) {// 改变int型变
-
javascirpt实现2个iframe之间传值的方法
本文实例讲述了javascirpt实现2个iframe之间传值的方法.分享给大家供大家参考,具体如下: index.htm <body> <table border="1" width="100%"> <tr> <td width="100%"><iframe src="iframe1.htm" name="aa"></iframe>&
-
java及C++中传值传递、引用传递和指针方式的理解
java的值传递理解: 代码1: public class Test { /** * @param args */ public static void main(String[] args) { StringBuffer buffer= new StringBuffer("colin"); SChange(buffer); System.out.println( buffer); } public static void SChange (StringBuffer str) { st
-
java-jsp springmvc-controller 传值到页面的方法
借助 org.springframework.ui.Model 对象或 Map 对象将信息传到 springmvc 的页面中 需要:jstl 支持 和 EL 表达式 1.maven 添加依赖: <!-- jstl(jsp 标准标签库) --> ;dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version>
-
浅析Java方法传值和传引用问题
某门户网站的一道笔试题 复制代码 代码如下: public class Test { public static void stringUpd(String str) { str = str.replace("j", "l"); System.out.println(str); } public static void stringBufferUpd(StringBuffer bf) {
-
java中文传值乱码问题的解决方法
本文实例为大家分享了java中文传值乱码问题,以及解决方法,供大家参考,具体内容如下 一般编码格式设置: 1.可以经过两次编码处理,即设置字符集后,在插入前解码字符集,也是最有效的方式 设置字符集: String value=null; try { value= URLEncoder.encode(jsonObjectPar.getString("value"), "UTF-8"); } catch (UnsupportedEncodingException e)
-
java 页面url传值中文乱码的解决方法
中文问题,是在应用中常常遇到的问题. 这将涉及到字符解码操作,我们在应用中常常会用new String(fieldType.getBytes("iso-8859-1"), "UTF-8");等类似的方法去解码.但这种方式受具体应用环境限制,往往在应用部署环境发生改变时,还会出现中文乱码. 在这里介绍一种解决方法,可以在任何应用部署环境下通用.此方法分两步: 1.在客户端用escape(encodeURIComponent(fieldValue))方法编码,例如: 复
-
Java 多线程传值的四种方法
其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数据 3:通过回调函数传递数据 那么博主有个非常变态的需求,所以找出了第四种实现方式,先看效果图: 动态Cron4j调度器,我曾经发过类似的文章,可以去搜索一下. 点击执行走下边的代码,然后根据类名反编译 public static void executeCron4j(String packageClass){ try { Object taskObj = classNewInstance(packageCl
-
java 多线程的同步几种方法
java 多线程的同步几种方法 一.引言 前几天面试,被大师虐残了,好多基础知识必须得重新拿起来啊.闲话不多说,进入正题. 二.为什么要线程同步 因为当我们有多个线程要同时访问一个变量或对象时,如果这些线程中既有读又有写操作时,就会导致变量值或对象的状态出现混乱,从而导致程序异常.举个例子,如果一个银行账户同时被两个线程操作,一个取100块,一个存钱100块.假设账户原本有0块,如果取钱线程和存钱线程同时发生,会出现什么结果呢?取钱不成功,账户余额是100.取钱成功了,账户余额是0.那到底是哪个
-
java arrayList遍历的四种方法及Java中ArrayList类的用法
java arrayList遍历的四种方法及Java中ArrayList类的用法 package com.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ArrayListDemo { public static void main(String args[]){ List<String> list = new ArrayList<String
-
详解Java停止线程的四种方法
一.线程停止基础知识 interrupted(): 测试当前线程是否已经中断.该方法为静态方法,调用后会返回boolean值.不过调用之后会改变线程的状态,如果是中断状态调用的,调用之后会清除线程的中断状态. isInterrupted(): 测试线程是否已经中断.该方法由对象调用 interrupt(): 标记线程为中断状态,不过不会中断正在运行的线程. stop(): 暴力停止线程.已弃用. 二.停止线程方法1:异常法停止 线程调用interrupt()方法后,在线程的run方法中判断当前对
-
分享Java多线程实现的四种方式
目录 以下四种方式: 1.继承Thread类,重写run方法 2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target 3.通过Callable和FutureTask创建线程 4.通过线程池创建线程 后面两种可以归结成一类:有返回值,通过Callable接口,就要实现call方法,这个方法的返回值是Object,所以返回的结果可以放在Object对象中. 第一种:继承Thread类,重写该类的run()方法. class My
-
java数组复制的四种方法效率对比
有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容. 来源于牛客网的一道选择题: JAVA语言的下面几种数组复制方法中,哪个效率最高? A.for循环逐一复制 B.System.arraycopy C.System.copyof D.使用clone方法 效率:System.arraycopy>clone>Arrays.copyOf>for循环 1.System.arraycopy的用法: public static void
-
java map遍历的四种方法总结
整理了关于java中map的遍历的四种方法: import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;publicclassMapTest{privateMap<String,String> map;publicMapTest(){ map =newHashMap<String,String>();
-
简单了解Java多线程实现的四种方式
第一种方式为继承Thread类然后重写run方法再调用start方法,因为java为单继承多实现,所以不建议使用这种方式,代码如下: public class Demo extends Thread{ public static void main(String[] args) { new Demo().start(); } @Override public void run() { System.out.println("继承Thread类实现多线程"); } } 第二种为实现Run
-
Java解析xml的四种方法汇总
1. DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以在任何时候在树中上下导航,而不是像SAX
-
JAVA实现单例模式的四种方法和一些特点
一.饿汉式单例类 复制代码 代码如下: public class Singleton { private Singleton(){ } private static Singleton instance = new Singleton(); private static Singleton getInstance(){ return instance; } } 特点:饿汉式提前实例化,没有懒汉式中多线程问题,但不管我们是不是调用getInstance()
随机推荐
- python数据类型判断type与isinstance的区别实例解析
- 浅谈C++ Explicit Constructors(显式构造函数)
- 2016年如何选择Linux发行版
- 基于java中反射的总结分析
- 一个简单的文件MD5码自动计算比较器(附源码)
- 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
- PHP通过header实现文本文件下载的代码
- 将文件放到Android模拟器的SD卡中的两种解决方法
- express的中间件bodyParser详解
- python判断一个集合是否包含了另外一个集合中所有项的方法
- Android实战打飞机游戏之菜单页面设计(1)
- 实现JavaScript高性能的数据存储
- php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
- AJAX避免用户重复提交请求实现方案
- XSLT轻松入门第二章:XSLT的实例
- Lua教程(十六):系统库(os库)
- jQuery树控件zTree使用方法详解(一)
- 使用jquery实现图文切换效果另加特效
- zTree插件下拉树使用入门教程
- Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法