java - (Java多线程) 多线程中如何传递参数?

标签 java multithreading

当我在 start() 方法中传递参数时,出现错误(在最后 5 行中)。错误提示:thread 类型中的方法 start() 不适用于参数 (int)。正确的做法是什么?

这个程序是关于使用 Java 中的多线程打印奇数/偶数。

import java.util.Scanner;

class odd extends Thread
{
public void run(int y){
    System.out.println("Odd numbers are:");
    for (int i=0;i<=y;i++)
    {
        if (i%2!=0)
        {
            System.out.println(i);
        }
    }
}
}

class even extends Thread{

public void run(int x)
{
    System.out.println("Even Numbers are");
    for (int i=0; i<=x; i++)
    {
        if (i%2==0)
        {
            System.out.println(i);
        }
    }
 }

 }


  class Star{
public static void main(String[] args)
{
    System.out.println("Enter No. upto which even-odd should be printed");
    Scanner var=new Scanner(System.in);
    int vary= var.nextInt();

    odd money=new odd();
    even honey=new even();

    money.start(vary);

    Thread.sleep(5000);
    honey.start(vary);

}
}

最佳答案

执行此操作的标准方法是

  1. 在线程类中声明一个或多个成员变量来保存参数
  2. 在线程类中声明一个构造函数来接收和存储这些参数
  3. 实例化线程类时传递参数

举个例子:

class Jo extends Thread
{
    int var;
    public Jo(int var) {
        this.var = var;
    }
    public void run(int y) {
        // some code using this.var
        ...
    }
}

...

Jo money = new Jo(vary);
money.start();

关于java - (Java多线程) 多线程中如何传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838678/

相关文章:

java - Spring 与 Struts 1 集成 - 将依赖项注入(inject)到 ActionForm

Java 应用服务器;哪个更好?

java - 在 LinkedList 中查找元素

Java 服务器程序在启动时吐出两个 U+FFFD 字符。需要帮助弄清楚它在哪里执行此操作以及为什么执行此操作?

c++ - boost 线程抛出异常 "thread_resource_error: resource temporarily unavailable"

java - java.util.Optional<T> 映射函数是线程安全的吗?如果是,我该如何测试?

Java递归查找日志

android - 带有同步方法的 Anr 消息

java - Spring Executorservice 错误处理

java - Hibernate 条件示例