创建线程时java中的错误

时间:2012-04-29 18:45:42

标签: java multithreading

创建线程时java中的错误。错误发生在" MainApp"使用RandomCharacterThread是错误。线程t1期待一个char,而我给它一个int值。这是导致错误的原因。我添加了注释,以使代码更清晰。

//Main class.
//program to display random numbers and characters using threads.
public class MainApp 
{

    public static void main(String[] args)
    {
        new MainApp().start();
    }
    public void start()
    {
        Thread t1 = new Thread (new RandomCharacterThread("1"));
        t1.start();

    }

}


//RandomCharacterThread.
//Imports.
import java.util.Random;
//=====================================================================
public class RandomCharacterThread implements Runnable
{
//Variables.
    char letter;
    int repeats;
    Random rand = new Random();
//Constructor
//=====================================================================
public void RandomCharacterThread(char x)
{
    letter = x;
    repeats = rand.nextInt(999);
}
public void run()
{
    try
    {
        for(int i = 0;i < repeats; i++)
        {
            System.out.println("Character: " + letter);
        }

    }
    catch(Exception e)
    {

    }
}

}

2 个答案:

答案 0 :(得分:3)

你的“构造函数”以char为参数;你传递的是String。你想做一些像

这样的事情
    Thread t1 = new Thread (new RandomCharacterThread('1'));

请注意单引号而不是双引号,这使得它成为char常量,而不是带有一个字符的String

我在引号中说“构造函数”,因为你实际上没有:你有一个方法返回与该类同名的void。删除“无效”,你会很好。构造函数根本没有返回类型:

public RandomCharacterThread(char x) 
{
    ...

这是一个非常常见的新手错误,但大多数人只会做一次!

答案 1 :(得分:0)

RandomCharacterThread的构造函数期望char类型的参数,当你传递一个字符串时会抛出错误。
这是正确的版本。

Thread t1 = new Thread (new RandomCharacterThread('1'));