0
から取得し、店舗の値にJavaでスレッドここに私は、マルチスレッドを使用して、ユーザーから名前を取得するためのコードを書きましたが、結果はは、マルチユーザー
予期せぬ入力
as as dd ff ee ew qq ff hh tt
出力です:
as ff ew hh tt qq ff null null null
最後に3文字のヌル文字が表示されています。私は2つのスレッドを作成し、各スレッドに対して5回の反復を割り当てました。
package Pack;
import java.util.Scanner;
public class add implements Runnable
{
int value[];
public add(int[] value)
{
this.value=value;
}
public void run()
{
@SuppressWarnings("resource")
Scanner in= new Scanner(System.in);
for(int i:value)
{
Thread1.str[i]=in.nextLine();
}
}
}
package Pack;
public class Thread1 {
public static String[] str= new String[10];
public static void main(String[] args) throws InterruptedException
{
Thread[] th= new Thread[2];
add a[]=new add[2];
int num[]={0,1,2,3,4,5,6,7,8,9};
for(int i=0;i<2;i++)
{
int part[]= new int[5];
for(int j=0;j<5;j++)
part[j]= num[i*2+j];
a[i]= new add(part);
th[i]= new Thread(a[i]);
}
for(Thread th1 : th)
{
System.out.println(th1.getName());
th1.start();
}
for(Thread th1 : th)
th1.join();
for(String num1:str)
{
System.out.println(num1);
}
}
}
あなたのプログラムが何をすべきか、そして期待される出力が何であるかを説明してください。スレッドがここで何をすべきかについても説明する。 – RealSkeptic
ここでは、ユーザーから10個の名前を取得し、変数に格納し、マルチスレッドを使用して印刷しています。そこで私は、それぞれ5回の繰り返しを実行する2つのスレッドを作成しました。私は上記のように入力を与えましたが、それを印刷すると、&値と3つのnullが表示されます。 – Magneto
ようこそスタックオーバーフロー! [ツアー](http://stackoverflow.com/tour)を見て回り、[ヘルプセンター](http://stackoverflow.com/help)、特に[どのように私に質問しますか良い質問?](http://stackoverflow.com/help/how-to-ask)と[ここで私はどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)。 [Java命名規則](http://www.oracle.com/technetwork/java/codeconventions-135099.html) –