请教一下java中多线程之间如何传递参数
参数类型 不确定 ,参数的数量也不确定,只有执行时才知道我知道有一个pass by block的东西 但是还没有弄明白谁有线索指点一下

解决方案 »

  1.   

    把参数定义到一个类里面
    那就让这多个线程都来读和写同一个类的成员变量。
    这个类里面的set方法加锁。
      

  2.   

    多线程数据传递很容易啊,定义一个static的全局变量不就结了。全部都往这个对象里面放。
      

  3.   

    但是这个参数的数量和类型是不确定的 如何定义这个类呢
    比如 5个 int的 和5个string的就是需要不同的定义啊
    还有一些用户自己定义的类型,这个类是事先不知道的,如何定义呢
      

  4.   

    还有参数的顺序 int int string 和 int string int 也是不一样的啊
      

  5.   

    楼主问的应该是多线程之间,数据的传递吧。或者,线程间的通信。
    参数,一般是指,调用方法的前提数据。线程之间,数据的传递,一般有以下几种方法:
    1. 共享数据区域: 比如,共享数据对象,队列,文件等等。
    2. 虚拟管道:一个线程向管道里写入数据,另一个线程读取数据。
    3. Socket、RMI等等。一般都选用第一种,共享数据的方法。简单、高效,涉及线程同步(或数据同步)问题。
      

  6.   

    楼上已经总结很详细楼主说的pass by block其实就是楼上诸位提到的static全局变量。
      

  7.   

    对于共享数据区,读的线程如何知道类型呢? 我的参数类型是不固定的,即使知道类型(getClass),在转换的过程中也会出现问题,举个例子吧 
    我尝试使用Object 来传递,但是调用函数的时候就出错了(参数类型不匹配),如何正确处理para才能调用函数呢? 
    public class test {

     
    public static void main(String[] args)
    {
    Object [] para = new Object[10];
    boolean flag = true;
    para[1]= 123;
    para[2]= "test string";
    para[3]=flag;


    test_nex(para[1],para[3], para[2]);  //这里就出错了
            return ;
    } public int test_nex(int i, boolean j, String s)
    {
    System.out.println("paras are:" +i + j + s);

    return 0;
    }


    }
      

  8.   

    static关键字  这例子跟你问的有关系吗?