★★Java質問・相談スレッド181★★

レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/02/10(土) 17:49:40.56ID:l9ZzjyKP
プログラミング言語Javaに関する質問スレです。
JavaScript, 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
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。

前スレ
★★Java質問・相談スレッド180★★
https://mevius.5ch.net/test/read.cgi/tech/1492780397/
2018/10/31(水) 14:41:22.75ID:3SYFbLW8
>>851
thisはクラス外からも当然見えているわけで、他のクラスも同じオブジェクトを同時にロックしている可能性がある
どえせ内部的に同期してるんなら他のクラスが同時にアクセスしてくることは何の問題もないはずで、これは完全に無駄なブロックだ
クラス外から見えるオブジェクトをロックするのはパフォーマンスだけではなくてデッドロックの可能性を高める非常に悪い行為
853デフォルトの名無しさん
垢版 |
2018/10/31(水) 15:22:21.60ID:6PFXXFSS
デッドロックの可能性は分かるんですが、
その性能の劣化というのは、クラス外でたまたまロックに使われていた場合、
待機時間が生じるから、ということですか?
待機時間以外に構造的に複雑なオブジェクトをロックすることでの性能劣化はありえますか?
2018/10/31(水) 15:45:06.31ID:3SYFbLW8
>>853
それはない
ロックはオブジェクトヘッダにロック中であることを示す情報を書き込むだけ
2018/10/31(水) 15:58:04.06ID:lmDzWSZe
意味不明なエラーで苦しめw
2018/10/31(水) 16:17:19.41ID:SePuugIe
ロック可能なのは全部ロックしたら苦しんだ黒歴史・・・
857デフォルトの名無しさん
垢版 |
2018/10/31(水) 17:20:43.08ID:6PFXXFSS
専用オブジェクトでロックしても結局プログラマーが入念にチェックする以外
無い気がするんですが合ってますか?
よく言われてるようなロック順序云々では解決しない気がするんですが
858デフォルトの名無しさん
垢版 |
2018/10/31(水) 17:23:06.92ID:xpjrbgPR
Javaはいつかなくなるんですか
2018/10/31(水) 19:25:31.36ID:ZwMW2kAu
いつか
2018/10/31(水) 19:27:08.55ID:iY3LkiS1
きっとどこかで生き残る
861デフォルトの名無しさん
垢版 |
2018/10/31(水) 19:30:32.81ID:umCB7ism
俺のディスクの上で生き残る
862デフォルトの名無しさん
垢版 |
2018/10/31(水) 19:48:34.38ID:umCB7ism
デッドロックと言えば、サーバをまたいだロックを掛けててデッドロックになった時は原因究明が大変だったなあ。
2018/10/31(水) 20:18:06.23ID:YzLC1QbG
>>857
外に漏らさなければ入念にチェックする範囲がクラス内だけに留まるだろ
外から見えるオブジェクトならそれを触ってる可能性のある範囲全てをチェックしなきゃいけない
864デフォルトの名無しさん
垢版 |
2018/10/31(水) 21:04:23.41ID:6PFXXFSS
>>863
クラスA#method1() method3呼び出し
クラスA#method2()
クラスB#method3() method2呼び出し

この状況でmethod1,3を異なるスレッドが呼び出したらデッドロックになりうるのでは?
クラスA,Bがそれぞれ専用のロックオブジェクトを持っていて
method1,2,3の内部でロックオブジェクトでロックしているとして
865デフォルトの名無しさん
垢版 |
2018/10/31(水) 21:13:55.51ID:umCB7ism
そういやJavaVMって実行時にデッドロックを見つけ出す機能はないのかな?
OSのファイルロックだと見つけてくれたりするよな。NFS絡むと無理だけど。
(あ、でも2プロセスでロック掛け合った場合だけかな?)
866デフォルトの名無しさん
垢版 |
2018/10/31(水) 21:30:17.03ID:6PFXXFSS
デッドロックを通知する仕組みはあるようです。JConsole

安全なsynchronizedというものは、そのメソッドがどこから呼び出されているか、
どれを呼び出しているかというような依存関係で決まって、
単純な記述方法で安全性を確保する事はできないのではと思いました。
どのオブジェクトをロックしてもこの問題は残ります。
https://www.jpcert.or.jp/java-rules/lck07-j.html
これなんかもそうですが、ロック順序だけで解決できると考えてしまっていますが、
synchronizedブロック内のロジックが他のメソッドを呼び出している場合、
まだデッドロックが発生する可能性があると思います。
派生していくメソッド呼び出しのどこかにsynchronizedブロックがあれば。
もちろん、多くの場合、プログラムは様々なメソッドを呼び出します。
>>857はこの理解で正しいかという意味です
2018/10/31(水) 21:40:58.89ID:KdCoWYCo
頑張れぼうやw
2018/10/31(水) 22:59:47.53ID:GrkkoIKB
>>864のケースで仮にAがthisをロックしていたとしたら、B#method3がA#method2を呼ばずともB#method3内で直接または間接的にAのロックを試みただけでデッドロックするだろう。
privateなロックオブジェクトを用いたからといってデッドロックの可能性はゼロにはならないが、thisを使うのに比べれば確実に可能性は低くなる。
あえてリスクの大きくパフォーマンスの低下する方を選択する積極的な理由がない。
2018/10/31(水) 23:05:48.35ID:VI6I+9K/
>>866
何を言いたいのか理解できないが、どこの誰がどんなタイミングでロックを取りに来ようとも、ロックの順番さえ守ってれば絶対にデッドロックは起こらないよ。
2018/10/31(水) 23:43:17.95ID:QZT9zuHU
DB などほとんどのアプリでは、デッドロックでタイムアウトする。
絶対に回避できない

ロックする順番は、2プロセスの場合、
プロセスAがX, Y、
プロセスBがY, X

3プロセスの場合、
プロセスAがX, Y、
プロセスBがY, Z、
プロセスCがZ, X
2018/11/01(木) 00:20:30.29ID:IO/IeQZr
>>870
ロックの順番があべこべなのだからデッドロックするのは当然だろう
2018/11/01(木) 06:39:30.81ID:MRwfHAbj
>>870
バカにロックを使わせるな
って言う見本

せめて初歩の初歩ぐらい理解してからレスしろよ w
873デフォルトの名無しさん
垢版 |
2018/11/01(木) 07:11:11.17ID:m171VN/W
>>869
ロックの順番を守る事ができないということです
ブロック内にメソッド呼び出しがあることは普通です
874デフォルトの名無しさん
垢版 |
2018/11/01(木) 07:11:48.43ID:m171VN/W
>>868
>どのオブジェクトをロックしてもこの問題は残ります。
875デフォルトの名無しさん
垢版 |
2018/11/01(木) 07:13:39.94ID:m171VN/W
現在している話は、普通のプログラムにおいてロックの順番を守る妥当な方法は存在しないという話です。
synchronizedブロック内でメソッド呼び出しがあった時点でそうなります。
それに対してロックの順番を守ればいいとかthisをロックしろとか言い続けているのは話が分かっていません。
876デフォルトの名無しさん
垢版 |
2018/11/01(木) 07:17:18.61ID:m171VN/W
もう少し分かり易い説明を思いつきました。
ここにある問題は、synchronizedブロックで一旦ロック順序を守ったとしても、
そのブロック内から呼び出されているメソッド及びそこから派生的に呼び出されている全てのメソッドにおいて
synchronziedブロックを使う場合デッドロックが生じうるという問題で、
リファクタリング等において恒久的に懸念が残り続けるという問題です。
これは一時ロック順序を守ったコードを書いても解決しません。
877デフォルトの名無しさん
垢版 |
2018/11/01(木) 07:20:14.51ID:m171VN/W
すみません、経験上凡人レベルの人に話しても理解されなくて、辛い思いをするだけです。
話を終わります。
2018/11/01(木) 07:36:25.75ID:PBz6MbCm
そうや。情報処理資格のテキストに書いてある。
楽観的とか、ああいうやつ

何も知らない奴が、ギャアギャア言ってるだけ
2018/11/01(木) 07:55:33.73ID:MRwfHAbj
ID:QZT9zuHU = ID:m171VN/W
バカのまま永遠にデッドロックしとけ
2018/11/01(木) 08:23:01.98ID:Tn1c1okn
例題とかじゃなくて、どういう時にロックが必要になるか考えて実際にやってみたらいいんじゃないか
そんな複雑なsynchronizedの使い方をしたことはしないだろう
2018/11/01(木) 09:20:12.40ID:AYHv18S/
>すみません、経験上凡人レベルの人に話しても理解されなくて、辛い思いをするだけです。
世間は俺のことを分かってくれない(馬鹿のFAQ)w
882デフォルトの名無しさん
垢版 |
2018/11/01(木) 09:30:29.97ID:KWvf1ga0
ID:m171VN/Wは天才すぎる故に凡人レベルの嫉妬を買ってしまった
883デフォルトの名無しさん
垢版 |
2018/11/01(木) 09:40:00.51ID:mQsUQM4b
いや本当。凡人レベルの人には話が通じませんよね。


という具合にみんなして同調しておけばいいのに。
2018/11/01(木) 09:41:09.33ID:VmLiOLMi
凡人にも理解出来る様に説明出来る能力を持ってるのが、天才の条件だな
説明出来ない人は紙一重の方
2018/11/01(木) 09:47:33.79ID:DtT8Cv0d
まあ責任と前提の問題だな
正常な頭してたらクラスAとクラスBが相互に密結合するような設計をすることはありえないから、
似た状況が起こりうるのはBがAに自身を登録してAがBをinterface経由で「コールバック」するようなパターンだろう
その場合、BのメソッドがAのコンテキストから呼び出されることはBを作る側は当然知っているはずで、Aを更に別のスレッドから呼ぶような基地外的行為をしないという人間としての最低限度の責任はB側にある
そしてA側はそのようなリスクのある拡張ポイントをなるべく作るべきではないし、やむを得ないときはドキュメントに明記するべき
2018/11/01(木) 10:30:23.17ID:Tn1c1okn
あれだ
スレッドを知った初心者が無駄に使いたくなってる状態に近いんじゃないか
2018/11/01(木) 10:34:13.85ID:x+OioMtW
天才はこちらへ

上級プログラマの雑談部屋☆2
https://medaka.5ch.net/test/read.cgi/prog/1524240229/
888デフォルトの名無しさん
垢版 |
2018/11/01(木) 11:38:29.67ID:mQsUQM4b
>>887
ありがとう。そんなスレがあったとは。正に俺のために作られたようなスレだな。

と、サラッと書けるくらいにならんといかんよ。現実がどうであれ。w
2018/11/01(木) 14:20:26.28ID:aGO292A7
馬鹿は死ななきゃ治らない
890デフォルトの名無しさん
垢版 |
2018/11/01(木) 15:10:14.12ID:Nl3jEz8g
javaの資格のsilverやgoldはどの程度の実力で受かりますか?
デザインパターンやリファクタリングをちゃんと理解しているレベルなら余裕で受かる?
2018/11/01(木) 15:35:43.13ID:mUSj63Sn
>>890
シルバーはブロンズと変わらん
ゴールドはライブラリの使い方知ってればおけ
日付の計算とかスレッドとかコレクション
892デフォルトの名無しさん
垢版 |
2018/11/01(木) 15:58:36.20ID:Nl3jEz8g
>>891
ゴールドもその程度で受かるのですか?
楽勝ですね。
じゃ逆にデザインパターンやリファクタリングをあまり理解していなくても受かるということ?
893デフォルトの名無しさん
垢版 |
2018/11/01(木) 16:03:52.20ID:OxvwXsOa
受けようと思ったことすらないのでわからない。
894デフォルトの名無しさん
垢版 |
2018/11/01(木) 16:11:52.48ID:Nl3jEz8g
職歴にプログラミングがないのでしかたなく資格でもアピールする必要があるのですが
Java資格はGoldを取るとして
あとなにがあったほうがよいでしょうか?
データベース関連やUML関連やネットワーク関連の資格ですか?具体的にはなにが印象いいでしょうか?
895デフォルトの名無しさん
垢版 |
2018/11/01(木) 16:12:24.17ID:Nl3jEz8g
デザインパターン関連の資格ってないのかな?
2018/11/01(木) 16:23:14.20ID:DtT8Cv0d
>>894
まずはIPAのデスペとデスペ
897デフォルトの名無しさん
垢版 |
2018/11/01(木) 16:33:52.56ID:Nl3jEz8g
デスペとデスペですか。
同じものなのになぜ2回も言うのですか。
898デフォルトの名無しさん
垢版 |
2018/11/01(木) 16:41:11.79ID:RfEd9OxR
大事なことなので
899デフォルトの名無しさん
垢版 |
2018/11/01(木) 17:12:47.17ID:Nl3jEz8g
そうですか。

なにか忘れてそうなのですが
プログラミングあるいは関連分野で、あったほうがいい資格はありませんか?
900デフォルトの名無しさん
垢版 |
2018/11/01(木) 18:05:14.35ID:OxvwXsOa
わからない。資格何もなしで何十年も働いちゃったもので。
一時期は学校でC言語教えてたりもしたが、資格はなかった。
あ、一太郎も教えてたことあったよ。もちろん資格なしで。
901デフォルトの名無しさん
垢版 |
2018/11/01(木) 19:13:26.95ID:Nl3jEz8g
>>900
無免許ですか。逮捕しますよw
一太郎は日本用のWordだと思うけどなんでそんなものが存在したの?
2018/11/01(木) 19:15:26.25ID:1Z/ZXoar
まあ実務をやる上では資格は特に必要ではない
ただ採用する立場だと資格ない奴とある奴ならある奴を取る
2018/11/01(木) 19:25:15.27ID:q4rSVTZi
馬鹿なんだろう
904デフォルトの名無しさん
垢版 |
2018/11/01(木) 19:39:49.82ID:OxvwXsOa
>>901
なんでって、MS-DOS時代のWORDは漢字扱えなかったからじゃないか?
2018/11/01(木) 23:44:32.35ID:kQnTnj4P
ブロンズは持っても意味ないしシルバーもゴールドの受験資格みたいなもんだぞ。
そんで中身の言語部分はJVMSもJLSも一切読まなくても答えられる程度でどちらかと言うと
ありふれたライブラリの宣伝兼再確認みたいな内容。
2018/11/02(金) 10:24:58.44ID:VhXZ8KFR
>>901
資格と免許の区別も出来ないんじゃ、
就職なんて出来んだろ
2018/11/02(金) 16:44:03.61ID:TVanRjUQ
もしかしなくてもsilverとかより基本情報技術者取ったほうがいいんでしょうか
2018/11/02(金) 16:53:15.88ID:3EaYIZ29
当然
Javaの重箱の隅に付いてる食べカスの色知ってる奴よりIPアドレスの計算できる奴の方が遥かに役に立つ
909デフォルトの名無しさん
垢版 |
2018/11/02(金) 17:17:06.84ID:0QIYfvOa
IPアドレスの計算って?
何か計算必要か?
910デフォルトの名無しさん
垢版 |
2018/11/02(金) 21:03:28.28ID:mJ2e4zOQ
インターネットキングならIPアドレスの計算くらい朝飯前だよ
911デフォルトの名無しさん
垢版 |
2018/11/02(金) 22:48:40.06ID:ejOlj3tt
サブネットマスクとかの話ちゃうの
2018/11/03(土) 00:34:57.85ID:8dUCHJOu
世の中に無駄なものなんかないよ
ジャヴァの資格もIPアドレスの計算も全て社会の役に立ってる
913デフォルトの名無しさん
垢版 |
2018/11/03(土) 18:14:19.75ID:b5iwDuZ8
java11, 12にはくだらない機能しか入らないのか
914デフォルトの名無しさん
垢版 |
2018/11/04(日) 11:32:05.48ID:hQdPSgHl
ブリッジパターンの応用手順のブログみたい。パッケージを開発する時を前提にしているね。
https://blogs.yahoo.co.jp/kamyu_2010/35480077.html
2018/11/06(火) 00:08:12.73ID:GjqHOKec
for文ブロックの後にループカウンタ変数の値でif文を書きたい
でもループカウンタ変数のスコープの問題で使えない

for文実行前にカウンタ変数用意するのは悔しいし誤動作を招きそうな気がするのでやりたくない
for文の中にif文を書いちゃえばいいんだけど毎回実行されるのは無駄で気持ちが悪いしそもそも本来やりたいことと違う

これはどう解決すれば良いんでしょうか、初歩的ですいません……
2018/11/06(火) 00:14:58.15ID:ShoHBAGo
>>915
forループに入る前にループカウンタとは別の変数を用意して、ループの最後にカウンタの値をその変数にコピーするようにしよう
そうすればループカウンタをfor文の外で宣言しなくて済むし悔しくない
2018/11/06(火) 00:22:51.13ID:GjqHOKec
そもそもループカウンタを前に宣言はできませんでした(今までそんなんやろうと思わなかった……)
>>916
代入ならif評価よりは速そうですね、ありがとうございます
918デフォルトの名無しさん
垢版 |
2018/11/06(火) 01:56:42.62ID:BD76rR44
>>915
それってループしている最中に if で何らかの条件により break するってことだよね?
それならその if ブロックの中で別の変数に代入すれば良い。

int j = -1;
for (int i = 0; i < max; i++) {
 if (f(i)) {
  j = i;
  break;
 }
}
if (j >= 0) {
...
}

もし上記のように途中でbreakして抜けるのでないなら max の値そのまま使えば良い。
2018/11/06(火) 11:11:50.23ID:I/7NgPjD
while使えば?
2018/11/06(火) 11:38:48.82ID:4wD9lBDw
時間の掛かるファイル読込処理を非同期実行して、その処理中にファイル読込具合に応じてJavaFXのプログレスバーを更新してるんだけど、
たまにプログレスバーが更新されない場合がある。なんで?

そのファイル読込処理とプログレスバー更新はインターフェースの継承メソッドに記述していて、
Threadクラスに登録するRunnableクラスのrunメソッド中でインターフェースの抽象メソッドを叩いて呼び出している。
1)イベントトリガが、JavaFXのFileChooserの選択完了時 → プログレスバー更新される
2)イベントトリガが、別のJavaFXの子Scene上のJavaFXボタン押下時(子Sceneのhide後) → プログレスバー更新されない
setImplicitExitをどうたらこたらするというのは一通り試した
簡単に解決したいんだがなあ
2018/11/06(火) 12:01:52.02ID:nXssBivk
>>920
JavaFXはもうJavaの標準ライブラリではなく単なる野良ライブラリの一つに過ぎない
スレ違い
2018/11/06(火) 12:19:26.12ID:4wD9lBDw
回答できんのなら黙ってろよな。回答できないくせに黙ってられないから池沼なのか
2018/11/06(火) 14:10:58.07ID:FYsrzIPK
と逆切れするアホ
2018/11/06(火) 14:23:17.36ID:V4FwzPmz
逆ではない
2018/11/06(火) 14:23:55.76ID:V4FwzPmz
順切れ
2018/11/06(火) 14:24:46.93ID:V4FwzPmz
>>921
おいお前
2018/11/06(火) 14:25:09.98ID:V4FwzPmz
死ね
2018/11/06(火) 14:28:34.10ID:V4FwzPmz
>>923
おいお前
2018/11/06(火) 14:29:02.76ID:V4FwzPmz
ハゲろ
2018/11/06(火) 14:43:02.48ID:B+7Pp6SO
フサフサが羨ましいのかw
2018/11/06(火) 14:45:10.57ID:V4FwzPmz
>>930
おいお前
2018/11/06(火) 14:45:32.38ID:V4FwzPmz
スレ違いだ
933デフォルトの名無しさん
垢版 |
2018/11/06(火) 19:07:34.12ID:13CfGTjW
どう見ても君がスレチ大魔王
2018/11/07(水) 00:26:50.27ID:s4BPycKf
substance.jarでswingの見た目変えるの好きだった
javafxは評判悪かった覚えがあるけどswing使用者はみんな移行したのかな
935920
垢版 |
2018/11/07(水) 12:34:31.16ID:LJxZYzuZ
解決したったわ
しかしここはクソの役にも立たねえな
たまに書き込むけど、光合成も出来ない原始生命を相手にしているようで、ただただ孤独しか感じられねえわ
次はジュラ紀になったら来てやるから、それまでに精々、自然淘汰されておけよ
936デフォルトの名無しさん
垢版 |
2018/11/07(水) 12:52:14.01ID:bimd4khF
FXのスレは本当にあるんだけどね。
2018/11/07(水) 13:18:13.99ID:ti/H8oE6
>>935
そんなお前にピッタリのスレがあるぞ
こんな低レベルのところじゃお前ほどの力は評価されないんだよ

上級プログラマの雑談部屋☆2
https://medaka.5ch.net/test/read.cgi/prog/1524240229/
2018/11/07(水) 14:02:24.18ID:+HyKX3eQ
>>934
FXは廃止されちゃったからね
極一部のニッチでしか使われてないしモバイルファーストやWebファーストの流れに侵食されてオワコン、とOracleさん自身が公式に宣言してる
2018/11/07(水) 14:05:19.70ID:1QLpYBJt
プグレスバーがジュラ紀を示したらまたおいでw
940デフォルトの名無しさん
垢版 |
2018/11/08(木) 12:06:43.94ID:QSZi8e/Z
Javaの仕事に転職したいのだけど
年収の交渉でプロ野球の契約更改のように代理人にお願いして年収アップの交渉をしてもらうシステムはないかな?
もちろん高収入になったらその1%は代理人に払うことにしたらその代理人もものすごくがんばってくれるからwin-winの関係になる。
941デフォルトの名無しさん
垢版 |
2018/11/08(木) 12:17:54.62ID:Cbg63GbQ
君がなれ
2018/11/08(木) 12:20:00.08ID:cbRquK1Y
>>940
年収2000万ぐらいなら探せばあるだろ
それ以下なら商売にならなすぎだから厳しいと思うけど
943デフォルトの名無しさん
垢版 |
2018/11/08(木) 12:25:50.93ID:Cbg63GbQ
1000万の1%が10万円。とすると月に10人以上成立させないとうまくいかんのではないか?
944デフォルトの名無しさん
垢版 |
2018/11/08(木) 12:28:16.32ID:QSZi8e/Z
>>943
それ専門だから1日に5回同じ場所で連続で面接に参加して
それで1月に20日働けば月収1000万円。
2018/11/08(木) 12:31:21.50ID:fwzjEtEg
>>940
そんなことができる代理人は自分で稼ぐだろ
そもそも億円プログラマーなんて存在するのかも怪しいし
946デフォルトの名無しさん
垢版 |
2018/11/08(木) 12:34:40.88ID:Cbg63GbQ
そういやさっきツイッターの広告でAIとチャットして何をやりたいかとか聞き出して人を募集している企業とのマッチングすのが出てきたよ。
やる前からAIに仕事奪われたようだなw
2018/11/08(木) 14:09:45.21ID:Ub+FCVlD
アホ参上
2018/11/08(木) 14:44:18.93ID:mJwNlcze
代理人の相場は10%が基本だぞ
2018/11/08(木) 16:13:10.74ID:cbRquK1Y
>>946
それ従来の検索フォームをチャットに変えただけだろ
2018/11/08(木) 17:07:12.88ID:o3TwcDma
人工無脳でも対応向上だと騙される奴がいるんだから有効だと言わざる得ないな
どうせブラック紹介されるなら萌えキャラにでも紹介された方がいいだろう?
2018/11/09(金) 16:17:59.93ID:o+E2GY7o
このスレの少し前にもオラクルの認定試験の話題がありましたが、
Java Silverは持っていると役に立つでしょうか?
Java Bronzeは既に取得しています。
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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