精华内容
下载资源
问答
  • 问题来源于给Runnable 接口的线程传参数…… 多个线程,进去的参数全不一样…… 比如进去的、出来的…… 先看个(游戏)参与者类: public class Playe2r {

    我的文章只给有耐心的人看,所以先写代码


    import java.util.concurrent.ExecutorService;

    import java.util.concurrent.Executors;
    import java.util.concurrent.Semaphore;



    public class TestWait implements Runnable {
    //    当前信号量
        int nt = 0;
    //    线程池
        ExecutorService service = null;
    //    全局信号量
        Semaphore sp = null;
        
        
        public ExecutorService getService() {
            return service;
        }

        public void setService(ExecutorService service) {
            this.service = service;
        }

        public Semaphore getSp() {
            return sp;
        }

        public void setSp(Semaphore sp) {
            this.sp = sp;
        }

        public int getNt() {
            return nt;
        }

        public void setNt(int nt) {
            this.nt = nt;
        }

        public static void main(String[] args) {
    //        线程池
            ExecutorService tservice = Executors.newCachedThreadPool();
    //        设定多线程并发信号量
            final Semaphore tsp = new Semaphore(10);
            
            int cnt = 100;
            for (int i = 1; i <= cnt; i++) {
                
                System.out.println("add the No. [" + i + "] thread in thread serveice!");
                //Test t = new Test();
                TestWait t = new TestWait();
                t.setNt(i);
                t.setService(tservice);
                t.setSp(tsp);
                
                Thread td = new Thread(t);
                
                tservice.execute(td);
                
            }
            tservice.shutdown();
        }

        public void run() {
            try{
    //            线程加数
                sp.acquire();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            
                System.out.println("--------->thread No. [" + nt + "]  start ! ***** 还有 " +sp.getQueueLength()+" 线程等待执行");
                
                
                try {
                    Thread.sleep(2000);//9000); //1000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
            
            try{
    //            线程减数
                sp.release();
            }catch(Exception e)
            {
                e.printStackTrace();
            }
            
        }

    }


    问题来源于给Runnable 接口的线程传参数……

    多个线程,传进去的参数全不一样……


    比如进去的、出来的……


    先看个(游戏)参与者类:



    public class Playe2r {

    public     int id;
    //    String name;
        int state; //1 可以对弈
        
        public Playe2r( int i, int j) {
            id=i;
            //name=nam1e;
            state=j;
            // TODO Auto-generated constructor stub
        }
        void setId(int i1d ) { this.id= i1d;}
        int getId() {return this.id;}
    }




    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    public class player1test1 {
        
        public static void main(String[] args)
        {
            Playe1r p1[]=new Playe1r[1000];
            for(int i=0;i<p1.length; ++i) {
                p1[i]=new Playe1r(i,""+i+"",1);
    //            p1[i].setId(i);
                p1[i].id=i;
                p1[i].state=(int) (9*Math.random());
            }
            
            for(int i= (p1.length-1); i>0; --i) {
                p1[i].getId();
                System.out.print(p1[i].id);
                System.out.print(":");
                System.out.println(p1[i].state);
            }
            System.out.println();
            
            //--
            List lst1=new ArrayList();
            
            for(int i1=0;i1<p1.length;++i1) {
                if(  (1<p1[i1].state )&&(4>p1[i1].state) ) {
                    lst1.add( new Playe2r(p1[i1].getId(), p1[i1].state) );
                }//if(1==p1[i1].getId(i1
            }//for(int i1
            
            Iterator it = lst1.iterator();
            while(it.hasNext()){
              // String s = (String)it.next(). ;
                Object obj=it.next();
                Playe2r objj=(Playe2r) obj;
               System.out.print(objj.getId() );
               System.out.print(" ");
               System.out.println(objj.state);
            }
            
            //==
            
            //-某player1 发起邀请
            
            for (int i1i=1;i1i<99;++i1i) {
                int rami=lst1.size();
                int no_i=(int) (rami*(Math.random()));
                
                for (int j1=1;j1<rami;++j1) {
                    if (no_i!=j1) {
                        //把  (no_i, j1) 这两个参数 分别 传给  邀请的 TestWait 线程(编号为响应的 线程池中的线程……
                    }//if (no_i!=j1            
                }//for(int j1=1
                
            }//for int i1i=1
            
            //==
            
            
        }//main
        
    }//class player1test1


    主要的程序就是以上的部分……


    至于 利用 “数组”如何传 相应(编号)的参数进去,咱们下回再说(文章已经够长了……)


    展开全文
  • Runnable实现参数传递

    2021-03-08 15:07:54
    大家都知道Runnable()是无法传参数的,但是,有时候,我们提交任务的时候,是需要传递参数的,所以,为了解决这个问题,有以下的方法; 这是,一个参数传递的设置接口,里面有一个设置参数的方法 public interface ...

    大家都知道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中;

    展开全文
  • 如何将数据传递给Runnable,这样可以用来更新UI?Android似乎不允许直接使用数据。有没有一个优雅的方式来做到这一点?public void OnNewSensorData(Data data) {runOnUiThread(new Runnable() {pub...

    我需要更新一些UI,并通过使用runOnUiThread在UI线程内进行

    现在UI的数据来自另一个Thread,这里用数据表示。

    如何将数据传递给Runnable,这样可以用来更新UI?

    Android似乎不允许直接使用数据。有没有一个优雅的方式来做到这一点?

    public void OnNewSensorData(Data data) {

    runOnUiThread(new Runnable() {

    public void run() {

    //use data

    }

    });

    }

    我的解决方案是在可运行的内部创建一个fioeld私有的数据传感器,并为其分配数据。只有原始的数据数据是最终的,这只能工作。

    public void OnNewSensorData(final Data data) {

    runOnUiThread(new Runnable() {

    private Data sensordata = data;

    public void run() {

    //use sensordata which is equal to data

    }

    });

    }

    展开全文
  • java中如何给Runnable线程传递参数

    千次阅读 2019-02-22 09:36:17
    向线程中传递数据的三种方法: 一、通过构造函数传递参数 public class MyThread1 extends Thread { private String name; public MyThread1(String name) { this.name = name; } public void run() { ...

    向线程中传递数据的三种方法:

    一、通过构造函数传递参数

    public class MyThread1 extends Thread
    {
        private String name;
        public MyThread1(String name)
        {
            this.name = name;
        }
        public void run()
        {
            System.out.println("hello " + name);
        }
        public static void main(String[] args)
        {
            Thread thread = new MyThread1("world");
            thread.start();        
        }
    }
    

    二、通过变量和方法传递数据

    public class MyThread2 implements Runnable
    {
        private String name;
        public void setName(String name)
        {
            this.name = name;
        }
        public void run()
        {
            System.out.println("hello " + name);
        }
        public static void main(String[] args)
        {
            MyThread2 myThread = new MyThread2();
            myThread.setName("world");
            Thread thread = new Thread(myThread);
            thread.start();
        }
    }
    

    三、通过回调函数传递数据

    class Data
    {
        public int value = 0;
    }
    class Work
    {
        public void process(Data data, Integer numbers)
        {
            for (int n : numbers)
            {
                data.value += n;
            }
        }
    }
    public class MyThread3 extends Thread
    {
        private Work work;
     
        public MyThread3(Work work)
        {
            this.work = work;
        }
        public void run()
        {
            java.util.Random random = new java.util.Random();
            Data data = new Data();
            int n1 = random.nextInt(1000);
            int n2 = random.nextInt(2000);
            int n3 = random.nextInt(3000);
            work.process(data, n1, n2, n3);   // 使用回调函数
            System.out.println(String.valueOf(n1) + "+" + String.valueOf(n2) + "+"
                    + String.valueOf(n3) + "=" + data.value);
        }
        public static void main(String[] args)
        {
            Thread thread = new MyThread3(new Work());
            thread.start();
        }
    }
    
    
    展开全文
  • 主要介绍了Java向Runnable线程传递参数方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java Runnable线程传参,让run访问参数

    千次阅读 2020-05-27 09:12:12
    做Android开发,可能经常要用到Runnable线程,有时候可能需要传参数进去,然后在run函数中取出参数使用。 解决办法 自定义一个接口,继承Runnable,新增一个传参方法 public interface MyRunnable extends Runnable ...
  • 3、导出,右键项目 -> export -> runnable jar file launch configiration:是指定用哪个类的Main方法作为函数入口,如果我们在里面找不到自己写的类,返回到类本身,运行一下main方法,就可以看到了。 export ...
  • public class Ball extends JPanel implements Runnable { /** * */ JFrame frame ; int x = 30 ; private static final long serialVersionUID = 1L ; public Ball () { frame = new JFrame () ; ...
  • Runnable中放入参数会一直报错,需要一个final类型的变量所以我们怎么传参数呢,用一个变量接受下就行不操作这个变量就行 Pair<List<Item>, RichQuery> proceed; if ((proceed = checkCache...
  • 线程Runnable

    2019-01-07 20:22:50
    Runnable接口中只有一个run()函数,并没有start()...Thread中有个以Runnable参数的构造函数   @FunctionalInterface public interface Runnable { /** * When an object implementing interface &lt;c...
  • Java 8 Runnable和Callable使用Lambda表达式示例Java 8 Runnable Lambda示例(带参数)Java 8 Callable Lambda示例(带参数)...在此页面上,我们还将提供如何将参数传递给Runnable和Callable方法。 Java 8 Runnable Lambda
  • } } } 于是,在其他类中实例化带参数的 Callalbe / Runnable,并且运行里面的 call() / run(): // 实例化 DownloadUtils downloadUtils = new DownloadUtils(); // 传入参数 ID、Service // 如果带参的构造器是...
  • Runnable任务

    2019-05-08 22:22:35
    任务 Runnable 定义了一个可以独立运行的代码片段,通常用于界面控件的延迟处理,比如为了避免同时占用某种资源造成冲突,有时则是为了反复间隔刷新界面从而产生动画效果。 运行 个任务也有多种形式,既能在 线程中...
  • 你不知道的Runnable接口,深度解析Runnable接口

    万次阅读 多人点赞 2016-11-04 14:12:47
    本文描述的是Android中的Runnable接口。因Android中的线程源自于Java,所以首先需要了解Java中的线程,有关Java中的线程请看这篇文章Android(线程一) 线程 ! Java开发中,我们实现多线程,有两种方式,一种是继承...
  • 一个使用函数接口作为方法参数的举例 */ public class Demo03Runnable { public static void metho1(Runnable r){ new Thread(r).start(); } public static void main(String[] args) { //使用普通匿名内部.....
  • Runnable VS Thread

    2016-04-29 19:18:50
    Runnable 和 Thread 的区别
  • Java中的Runnable

    2019-12-05 17:17:40
    一、Runnable与Thread的区别: ...4.Runnable接口是一个功能接口,并且具有单一的run()不接受任何参数,并且不返回任何值的方法。 二、在程序开发中多线程主要以实现Runnable接口为主。 Java多线...
  • 如何run()方法传参数

    千次阅读 2019-04-06 23:16:00
    实现的方式主要有三种 1、构造函数传参 2、成员变量传参 3、回调函数传参 问题:如何实现处理线程的返回值?...public class CycleWait implements Runnable{ private String value; pu...
  • Runnable 注解注入

    千次阅读 2018-08-23 18:10:53
    public class RunnableTask implements Runnable { private int projectId; private TransactionService transactionService; // 这个就是注解注入 RunnableTask() { } // 注解在别的...
  • 安卓Runnable接口解释

    2020-05-04 09:19:38
    Runnable接口解释 官方地址如下: https://developer.android.google.cn/reference/java/lang/Runnable?hl=en 官方解释如下 The Runnable interface should be implemented by any class whose instances are inte...
  • Runnable方式创建线程详解

    千次阅读 2019-09-14 12:58:19
    2.4创建线程的方式二 创建线程的第二种方式.使用Runnable接口. 该类中的代码就是对线程要执行的任务的定义...4:将Runnable接口的子类对象作为实际参数,传递Thread类构造方法 5:调用Thread类的start方法开启线程...
  • JAVA 实现Runnable接口

    千次阅读 2017-12-11 09:10:45
    如有侵权,请作者联系我删除博客,谢谢 //仅作为学习笔记 ...创建线程的第二种方式:实现Runnable接口 步骤: 1,定义类实现Runnable接口 2,覆盖Runnable接口中的run方法 将线程要运
  • Kotlin入门(29)任务Runnable

    千次阅读 2018-10-27 12:07:11
    任务Runnable定义了一个可以独立运行的代码片段,通常用于界面控件的延迟处理,比如有时为了避免同时占用某种资源造成冲突,有时则是为了反复间隔刷新界面从而产生动画效果。运行一个任务也有多种形式,既可在UI线程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 189,914
精华内容 75,965
关键字:

给runnable传参数