我试图使用像threadname1,threadname2,.. threadnamen这样的变量创建多个线程.我没有将它作为硬编码值给出,而是尝试使用for循环获取n个数字,并在"threadname"字符串的末尾使用它.它会引发一些错误.我该如何解决这个问题?
public class RunnableExample{
public static void main(String[] args){
String Name = "";
String Ip = "";
for (int i=1; i<=2; i++){
if(i == 1){
Name = "irony";
Ip = "82.209.27.24";
}
else{
Name = "jocky";
Ip = "98.12.098.56";
}
String runname = "threadname" + i;
RunnableThread runname = new RunnableThread(Name,Ip);
new Thread(runname).start();
}
//RunnableThread threadname1 = new RunnableThread("irony","82.209.27.24");
//RunnableThread thread4 = new RunnableThread("jocky","98.12.098.56");
//new Thread(threadname1).start();
//new Thread(threadname2).start();
try{
}
catch (InterruptedException e) {
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
bash-3.00# javac RunnableExample.java
RunnableExample.java:43: runname is already defined in main(java.lang.String[])
RunnableThread runname = new RunnableThread(Name,Ip);
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?似乎需要一些类型转换.我不确定.
Jon*_*eet 10
这是你的问题:
String runname = "threadname" + i;
RunnableThread runname = new RunnableThread(Name,Ip);
Run Code Online (Sandbox Code Playgroud)
您正在尝试使用相同的名称声明两个变量.你不能这样做.更改其中一个变量的名称.变量名在Java中的编译时是固定的.您不能说"使用此变量的执行时间值的名称声明变量",这是我认为您正在尝试执行的操作.
如果您想要一种访问多个值的方法,请使用集合或数组.例如,您可能需要List<RunnableThread>这里 - 在循环的每次迭代中将值添加到列表中.
我还强烈建议您在开始尝试使用线程之前确保了解Java的基础知识(比如变量和集合).线程很复杂,很难推理 - 如果你正在努力学习核心语言,那就更难了.
| 归档时间: |
|
| 查看次数: |
2619 次 |
| 最近记录: |