私はJavaでスレッドを含む私の最初のプロジェクトに取り組んでいます。もしJavaでマルチスレッドをしてください。誰もJavaでスレッドが独自のスタックを実装する方法を説明できますか?
答えて
Javaでは(ほとんどのOS /フレームワークをサポートするスレッドと同様に)スレッドは同じプロセス内で動作しているため、ヒープメモリを共有しますが、各スレッドには独自のスタックがあります。ローカル変数(つまり、関数内で宣言された変数)がスタックに割り当てられます。したがって、スレッドが別のスレッドのローカル変数にアクセスする方法はありません。このステートメントは、その値ではなく変数に適用されることに注意してください。 Javaでは、変数はプリミティブ型(int、float、long、double、byte、char、boolean)を持つことも、クラス型を持つこともできます。後者の場合、変数は参照(Cのポインタに似ています)ですが、2つの非プリミティブ変数がスタック上にあり、ヒープ上にある同じオブジェクトインスタンスを参照することができます。
スタックnのJavaとcoderanchのコード例を説明していただきありがとうございます。私は今よりはっきりしています。なぜ、「スレッドが別のスレッドのローカル変数にアクセスする方法がないのです」 –
私は日食でこれを試してみましたが、ご参考のために、以下のリンクを送信し、私はあなたが一般的に
https://coderanch.com/t/566298/java/Implementing-stack-threads
任意の明確化が必要な場合、スタックは変数で動作します知っています。マルチスレッドとは、処理の処理方法です。 Microsoftの環境では、ヒープはクラスオブジェクトと関数が存在し、変数がスタック上にある場所です。 – yardpenalty