Java入門・初心者質問スレ Part.9

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/03/09(土) 23:59:15.92ID:ACok0wnJ
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.8
http://mevius.5ch.net/test/read.cgi/tech/1528370228/
2019/03/27(水) 06:22:28.73ID:VcZxW+M/
('仄')パイパイ
2019/04/09(火) 17:21:52.11ID:WcUdn8Y0
(1)
while (threadState == true) {}

(2)
while (threadState == true) {
System.out.print("");
}

マルチスレッドで、他のスレッドが threadState を変更するのを待ちたいのですが、(1)だとループを抜けてくれませんが、(2)なら抜けます。
何が悪いんでしょうか?
4デフォルトの名無しさん
垢版 |
2019/04/09(火) 17:29:01.76ID:xq+Mg1lA
>>3
その変数の宣言はどうなってる?
5デフォルトの名無しさん
垢版 |
2019/04/09(火) 17:38:46.23ID:WcUdn8Y0
>>4
boolean threadState;
クラス変数です。
この変数を変更する別スレッドも内部クラスです。
6デフォルトの名無しさん
垢版 |
2019/04/09(火) 18:13:44.59ID:xq+Mg1lA
>>5
volatile 付けるとどうなる?
7デフォルトの名無しさん
垢版 |
2019/04/09(火) 18:28:46.46ID:WcUdn8Y0
>>6
それでうまく行きました。ググったらコンパイラの最適化の問題とかみたいですね。
本当にありがとうございました。
8デフォルトの名無しさん
垢版 |
2019/04/09(火) 20:54:29.66ID:xq+Mg1lA
>>7
ああ。でもマルチスレッドでの同期については単純なのならそれでも良いけど本当ならちゃんとロックした方が良い事はお忘れなく。

少なくとも今のプログラムだと変数の内容が変わるまでずっとルーブするので効率が悪い。
他から起こされるまで眠るみたいな方式の方が本当に何もしない状態になるので効率は良い。
9デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:40:38.40ID:rH04a7Av
スレチならすいません。
以前からスマホアプリを作ってみたいなとおもってまして、この度PCを購入しました
のでもってまずはプログラミングの代名詞でもあるjavaを習いたいと思いandroid studio をダウンロード、インストールしたのですが、
アプリが立ち上がりません。。

どなたかこの原因がわかる方いませんか?

↓エラーメッセージ
Error launching Studio
Failed to load JVM DLL C:\Program Files\Android\Android Studio\jre\jre\bin\server\jvm.dll

if you already have a 64-bit JDK installed, define a JAVA _HOME variable in Computer > System Properties > System Setting > Enviroment Variables.


↓PCのスペック
win 10
Corei7
RAM 8G
OS 64ビット
10デフォルトの名無しさん
垢版 |
2019/04/22(月) 01:40:27.90ID:x8/JvOWt
JVMのDLLの読み込みが失敗しました
64-bit JDKインストールされてるなら環境変数JAVA_HOMEを設定してください

ってことなのでJavaをインストールして環境変数を設定したらok
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況