Java Runnable线程传参,实现让run访问参数

目录
  • Java Runnable线程传参,让run访问参数
    • 前言
    • 解决办法
  • Runnable实现参数传递
    • 有以下的方法

Java Runnable线程传参,让run访问参数

前言

做Android开发,可能经常要用到Runnable线程,有时候可能需要传参数进去,然后在run函数中取出参数使用。

解决办法

自定义一个接口,继承Runnable,新增一个传参方法

public interface MyRunnable extends Runnable {
   public MyRunnable setParam(String... param);
}

实现这个自定义接口

MyRunnable sendMessage = new MyRunnable() {
    String message;
    @Override
    public MyRunnable setParam(String... param) {
        message = param[0];
        return this;
    }

    @Override
    public void run() {
        sendMessage(message);
    }
};

Runnable实现参数传递

大家都知道Runnable()是无法传参数的,但是,有时候,我们提交任务的时候,是需要传递参数的,所以,为了解决这个问题

有以下的方法

这是,一个参数传递的设置接口,里面有一个设置参数的方法

public interface MyRunnable extends Runnable {
    public MyRunnable setParam(String param);
}
    public static void main(String[] args) {
        MyRunnable myRunnable = new MyRunnable() {
        // 新建接口,然后定义写实例变量;
            String string ;
            @Override
            public void run() {
                // 实现线程池的传参
                System.out.println(string);
            }
            @Override
            public MyRunnable setParam(String param) {
                string = param;
                return this;
            }
        };
        new Thread(myRunnable.setParam("aaa")).start();
    }

在进行使用时,我们可以在新建MyRunnable的时候,实现run() 和 setParam()方法,将参数设置到String中

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java线程之使用Runnable接口创建线程的方法

    实现Runnable接口的类必须使用Thread类的实例才能创建线程.通过Runnable接口创建线程分为两步: 1. 将实现Runnable接口的类实例化. 2. 建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法. 最后通过Thread类的start方法建立线程. 下面的代码演示了如何使用Runnable接口来创建线程: 复制代码 代码如下: package mythread; public class MyRunnable implements Runn

  • java多线程编程之使用runnable接口创建线程

    1.将实现Runnable接口的类实例化. 2.建立一个Thread对象,并将第一步实例化后的对象作为参数传入Thread类的构造方法. 最后通过Thread类的start方法建立线程.下面的代码演示了如何使用Runnable接口来创建线程: package mythread;public class MyRunnable implements Runnable{ public void run() {  System.out.println(Thread.currentThread().get

  • Java向Runnable线程传递参数方法实例解析

    java Runnable接口:是一个接口,它里面只有一个run()方法,没有start()方法,继2113承Runnable并实现这个方法就可以实现多线程了,但是5261这个run()方法不能自4102己调用,必须由系统来调用. 向线程中传递数据的三种方法: 一.通过构造函数传递参数 public class MyThread1 extends Thread { private String name; public MyThread1(String name) { this.name = n

  • Java多线程实现Runnable方式

    本文为大家分享了Java多线程实现Runnable方式的具体方法,供大家参考,具体内容如下 (一)步骤 1.定义实现Runnable接口 2.覆盖Runnable接口中的run方法,将线程要运行的代码存放在run方法中. 3.通过Thread类建立线程对象. 4.将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数. 为什么要讲Runnable接口的子类对象传递给Thread的构造方法.因为自定义的方法的所属的对象是Runnable接口的子类对象. 5.调用Thread类的

  • Java Runnable线程传参,实现让run访问参数

    目录 Java Runnable线程传参,让run访问参数 前言 解决办法 Runnable实现参数传递 有以下的方法 Java Runnable线程传参,让run访问参数 前言 做Android开发,可能经常要用到Runnable线程,有时候可能需要传参数进去,然后在run函数中取出参数使用. 解决办法 自定义一个接口,继承Runnable,新增一个传参方法 public interface MyRunnable extends Runnable { public MyRunnable set

  • C++11/14 线程调用类对象和线程传参的方法

    线程调用类对象 在前面的示例中,我们为线程任务使用了通常的函数.实际上,我们可以使用任何可调用对象或者lambda函数,如下调用类对象的例子: #include <iostream> #include <thread> class MyFunctor { public: void operator()() { std::cout << "functor\n"; } }; int main() { MyFunctor fnctor; std::thre

  • PostMan如何传参给@RequestBody(接受前端参数)

    目录 PostMan传参给@RequestBody(接受前端参数) @requestBody参数Map传参注意事项 PostMan传参给@RequestBody(接受前端参数) 今天新接手一个项目框架,需要改造,但后台写好方法,准备用postman 测试时候,发现用以前传参方式不行,需要需要将json字符串转成json对象: 先上图吧,第一张: 一般传参方式: 更改传参方式后,可以传参接受了: 直接上图吧: 注意箭头指的地方,参数格式转换成这样的就行. 顺便上下后台controller接参数形式

  • vue路由传参-如何使用encodeURI加密参数

    目录 使用encodeURI加密参数 比如参数是一个对象obj 解密方式是使用decodeURI vue路由加密传参 传参页面 接收页面 使用encodeURI加密参数 在路由切换时页面需要使用地址栏传参,但地址栏会暴露参数的值,然后想到了encodeURI加密参数 比如参数是一个对象obj obj:{     id: 1,     name: 'Tom' } 那么需要将参数转换为JSON字符串,在使用encodeURI加密,需要注意的是通过路由跳转的时候会自动解密一次,所以需要加两次密 let

  • 浅析java中Integer传参方式的问题

    Java本身都是值传递式的调用,对于对象传递的是地址值.给地址值重新赋值等于重新指向,不会影响外层.而且这里Integer对象也有特殊性.其实现上可能类似 复制代码 代码如下: class Integer{final int value; //一旦赋值,就不能改变.} 这就出现:调用时传的地址值不能改变外层+对象本身又不能改变.导致这个值没法改变 解决方案很多1.java风格就是,单个值用返回值.return i; 外面再i=foo();赋值:多个值用数组或对象.2.传递自己的封装类.class

  • 浅谈Mybatis传参类型如何确定

    目录 I. 环境配置 1. 项目配置 2. 数据库表 II. 传参类型确定 1. 参数类型为整形 2. 指定jdbcType 3. 传参类型为String 4. TypeHandler实现参数替换强制添加引号 5. 小结 最近有小伙伴在讨论#{}与${}的区别时,有提到#{}是用字符串进行替换,就我个人的理解,它的主要作用是占位,最终替换的结果并不一定是字符串方式,比如我们传参类型是整形时,最终拼接的sql,传参讲道理也应该是整形,而不是字符串的方式 接下来我们来看一下,mapper接口中不同的

  • SpringCloud:feign对象传参和普通传参及遇到的坑解决

    目录 feign对象传参和普通传参及遇到的坑 对象传参 普通传参 遇到的坑-1 遇到的坑-2 feign传递复杂参数对象需要注意的地方 传递复杂参数对象需要用Post 在传递的过程中 feign对象传参和普通传参及遇到的坑 对象传参 使用@RequestBody来指定传参对象 @RequestMapping(value = "/v2/matterCode/genCode", method = RequestMethod.POST)     ResultResponse<Strin

  • Vue与Axios的传参方式实例详解

    目录 Vue的传参方式: 1.通过name来传递参数 2.通过路径的方式进行传参,需要在在路由配置中占位 2.1.通过v-bind:to的方式进行传参采取params:{key:value}(路径传参) 2.2.直接将参数写在路径上进行传参 3.通过v-bind:to的方式进行传参采取query:{key:value}(问号传参) 4.编程式导航,这是最常用的方式 axios传递参数 1.GET传参 1.1.通过?传参 1.2.通过URL传参 1.3.通过参数传参 2.DELETE传参同GET

  • url 编码 js url传参中文乱码解决方案

    1.配置文件web.config中 在节中加上整个网站的编码方式. <globalization fileEncoding="GB2312" requestEncoding="GB2312" responseEncoding="GB2312"/> 这样参数就以gb2312的中文编码方式传输了.而一般默认是utf-8. 2.在传参是先编码在传输,接受时先编码,在接收. string mm=Server.URLEncode(你); Res

  • 浅析vue-router jquery和params传参(接收参数)$router $route的区别

    今天做项目时踩到了vue-router传参的坑(jquery和params),所以决定总结一下二者的区别. 1.jquery方式传参和接收参数 传参: this.$router.push({ path:'/xxx' query:{ id:id } }) 接收参数: this.$route.query.id 注意:传参是this.$router,接收参数是this.$route,这里千万要看清了!!! this.$router 和this.$route有何区别? 在控制台打印两者可以很明显的看出两

随机推荐