★★Java質問・相談スレッド148★★
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/09/20(火) 09:07:19.06JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
(p)ttp://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド147★★
http://hibari.2ch.net/test/read.cgi/tech/1312958339/
次スレは>>950あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
0952デフォルトの名無しさん
2011/10/16(日) 20:37:21.430953デフォルトの名無しさん
2011/10/16(日) 20:43:25.130954デフォルトの名無しさん
2011/10/16(日) 20:53:57.920955デフォルトの名無しさん
2011/10/16(日) 20:54:45.49あれは、ブロック内の処理を実行中に
別のスレッドがそのブロックの処理を実行した場合、
後から来たスレッドを待機させる処理、という理解で良いのでしょうか。
だとすると、パラメータとして引き渡しているインスタンスは
何の役割を果たしているのでしょうか。
0956デフォルトの名無しさん
2011/10/16(日) 21:11:06.460957デフォルトの名無しさん
2011/10/16(日) 21:47:36.13synchronizedブロックは、
ブロック内の処理を実行中、渡されたインスタンスをロックする処理、なのでしょうか。
他のスレッドの処理が待機するのは、
同一synchronizedブロックに入ったときではなく、
パラメータとして引き渡されたインスタンスへアクセスを試みたとき、
となるのでしょうか。
0958デフォルトの名無しさん
2011/10/16(日) 21:52:19.040959デフォルトの名無しさん
2011/10/16(日) 21:54:17.99同一のキーを使用して複数のスレッドが同時にロックを取得することはできないので、
他のスレッドはsynchronizedの入り口で待たされるわけです
0960デフォルトの名無しさん
2011/10/16(日) 21:57:30.79そのオブジェクトがどんな実装を行っているものかは関係なく、
単なるマーカー的なもの。
だから、一貫して使っていれば、どこの馬の骨ともわからぬオブジェクトを使ってよい。
なお、synchronizedでガードする必要があるのは、処理ではなくデータ。
基本的には、ガードしたいオブジェクトへの全てのアクセスに対し、
同じオブジェクトでガードしていることが必要
(ピギーバッキングで微妙なこともできるかもしれないけど)
0961デフォルトの名無しさん
2011/10/16(日) 21:57:42.520962デフォルトの名無しさん
2011/10/16(日) 22:03:24.980963デフォルトの名無しさん
2011/10/16(日) 22:11:19.90そのオブジェクトへのアクセスをロックってあんまりしないよね
だいたい一連の処理を分割させないために適当に一つ選んでロックに使う
0964デフォルトの名無しさん
2011/10/16(日) 22:19:57.70そのインスタンスのpublicメソッドに
synchronizedつけとけって話になるからな
0965デフォルトの名無しさん
2011/10/16(日) 22:34:25.22synchronized処理に渡されたインスタンスは、
そのブロックが抜けるまでキーとして保持される。
synchronized処理に渡されたインスタンスがすでにキーとして存在する場合、
そのスレッドはキーが開放されるまで待機する。
ゆえに、全く別の場所で実行されたsynchronizedでも、
渡されたインスタンスが同一ならば後発側が待機させられ、
同じ場所で実行されたsynchronizedでも、
渡されたインスタンスが違うならば並行して動作する、ということでしょうか。
馬鹿だから無理です、って言ったら明日からPowerd by 無職ですので。
多少は無理せねばならんのがつらいところです。
0966デフォルトの名無しさん
2011/10/16(日) 22:38:19.25インスタンスメソッドでsynchronizedが付いてるのとか良く見るな
0967デフォルトの名無しさん
2011/10/16(日) 22:41:38.04お前には無理
0968デフォルトの名無しさん
2011/10/16(日) 22:42:02.81どうせ使うときに外からロックすることになるから大して意味ないけど
0969デフォルトの名無しさん
2011/10/16(日) 22:57:41.67Javaではできないじゃん?
どうすりゃいいの?
0970デフォルトの名無しさん
2011/10/16(日) 23:06:23.93↓これはコンパイル通るけど、こういうのじゃダメなの?
List<List> list = new ArrayList<List>();
list.add( new ArrayList<String>() );
0971デフォルトの名無しさん
2011/10/16(日) 23:09:14.050972デフォルトの名無しさん
2011/10/16(日) 23:21:38.46うまくいかないと判断したコードを http://ideone.com/ に貼れば答えがでてくるかも
0974デフォルトの名無しさん
2011/10/16(日) 23:29:42.400975デフォルトの名無しさん
2011/10/16(日) 23:33:36.270976デフォルトの名無しさん
2011/10/17(月) 13:42:39.59例えばsampleクラスのオブジェクトを作成する際に
Sample args[0] = new Sample();
という形で作成したいんですが…
0977デフォルトの名無しさん
2011/10/17(月) 15:00:21.540978デフォルトの名無しさん
2011/10/17(月) 15:26:24.11一番近いのはMap<String, Sample>か?
0979デフォルトの名無しさん
2011/10/17(月) 17:07:08.150980デフォルトの名無しさん
2011/10/17(月) 17:55:34.740981デフォルトの名無しさん
2011/10/17(月) 18:54:52.03Sample sample = new Sample();
ってやったときの、 sample って文字列がバイトコードに残ってるかって話。
0982デフォルトの名無しさん
2011/10/17(月) 19:07:52.170983デフォルトの名無しさん
2011/10/17(月) 19:11:50.65ということでデバッグ付きコンパイルでは残っているに一票。
リフレクションとかで引っ張ってこれるわけじゃないんでデバッグなしだと消えるんじゃ?
0984デフォルトの名無しさん
2011/10/17(月) 19:46:24.300985デフォルトの名無しさん
2011/10/17(月) 19:48:49.470986デフォルトの名無しさん
2011/10/17(月) 21:02:55.270987デフォルトの名無しさん
2011/10/17(月) 22:21:35.18javapでggr
0988デフォルトの名無しさん
2011/10/17(月) 22:40:33.860989デフォルトの名無しさん
2011/10/18(火) 00:59:42.03例えばEclipseで作ったclassと、単純にjavac叩いてできたclassをjadにでも突っ込んでみるといい。
0990デフォルトの名無しさん
2011/10/18(火) 03:15:07.380991デフォルトの名無しさん
2011/10/18(火) 03:20:02.690992デフォルトの名無しさん
2011/10/18(火) 03:38:17.36そしてJVMの帳が下りる頃、Dukeは心地よい眠りに就くのだ。
0993デフォルトの名無しさん
2011/10/18(火) 05:52:05.57そもそもデバッグなしコンパイルをやったことがありません。
0994デフォルトの名無しさん
2011/10/18(火) 06:38:15.13ローカル変数名はコンパイルするとスロット番号による管理に置き換わる。
フィールド変数名はコンパイルするとコンスタントプールへの
インデックス値による管理に置き換わる。
実行時のリフレクションで名前アクセスできるのはフィールド値だけ。
これで答えになったかな
0995デフォルトの名無しさん
2011/10/18(火) 09:01:07.370996デフォルトの名無しさん
2011/10/18(火) 12:36:33.060997デフォルトの名無しさん
2011/10/18(火) 12:39:09.400998デフォルトの名無しさん
2011/10/18(火) 12:39:24.370999デフォルトの名無しさん
2011/10/18(火) 12:39:54.931000デフォルトの名無しさん
2011/10/18(火) 12:40:09.3710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。