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

哟妈妈

当我在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);

}
}
里纳·阿帕德(Reena Upadhyay)

您的程序中存在语法和逻辑错误:

我已更正您的代码。下面的代码是使用Java多线程打印奇/偶数的正确代码。

class jo extends Thread {
    private int number;

    jo(int number) {
        this.number = number;
    }

    @Override
    public void run() {
        System.out.println("Odd numbers are:");
        for (int i = 0; i <= number; i++) {
            if (i % 2 != 0) {
                System.out.println(i);
            }
        }
    }
}

class yo extends Thread {

    private int number;

    yo(int number) {
        this.number = number;
    }

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

}
import java.util.Scanner;

class Star {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("Enter No. upto which eve-od should be printed");
        Scanner var = new Scanner(System.in);
        int vary = var.nextInt();
        jo money = new jo(vary);
        yo honey = new yo(vary);

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

    }

}

已完成的更正:

  1. 在Star类中,当您创建jo类的对象时发生语法错误

2.要实现多线程,需要重写线程类的运行方法。run方法的正确签名是public void run() { //logical code will go here }run方法不接受任何输入参数。

3.要开始执行线程,您需要调用Thread类的start方法。看起来像public void start()start方法不接受任何输入参数。

4.我在jo和yo课堂上对您的代码进行了逻辑更正。使用%运算符检查给定数字是偶数还是奇数。%运算符返回余数,如果一个数除以2时余数为零,则表示该数为偶数,否则为奇数。

您可以运行共享代码来检查输出。

祝您编码愉快!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章