ここ数週間、私はJavaで並行処理(マルチスレッド)を学んできました。これまでのところJava言語で遭遇したこと(または一般的なプログラミング)とは異なり、難しくてむしろ違います。しばしば、私が小さなコンセプトを完全に理解し始めるまで、私は再び読んで何度も読まなければなりません。私は間違った方法でマルチスレッドを見ていますか? (Java)
Javaプログラミング言語のこの部分が私に大きなトラブルをもたらした理由はわかりました。
通常、私はシングルスレッドプログラムのコードを見ると、メインメソッドを見て、デバッガのように実行全体を通して段階的に進めます。このプロセスを通して、私は、実行中のあらゆる時点で変数とその状態(値)のようなあらゆることを心に留めようとします。しばしば、私はある時点で停止し、プログラムの実行がさまざまなシナリオでどのように変わるかを考えます。私が最初から最後までプログラムを進めることができれば、コードと素材を完全に理解したように感じる。
私は、このアプリケーションを同時アプリケーションに適用しようとすると、一度にsleep()、同期メソッド、組み込みロックの取得、保護されたブロックの使用待ち()など)、何かがいつ実行されるかについての不確実性が非常に高いため、すべてのことについていくことはほとんど不可能になります。それは、私が "何が起こっているのかを制御している"という気持ちを持ちたいが、同時性は不可能だと思うので、私を苛立たせている。
ご迷惑をおかけしますようお願い申し上げます。
私は[programmers.stackexchange](http://programmers.stackexchange.com)がそのような質問のために良い場所だと思います。 –
それを得ました、私は将来心に留めておきます! –
"イベント"(メソッド呼び出しをより正確に)に応答して、ある状態から別の状態に切り替えることで、アプリケーションのさまざまな部分をどのように応答するかについて、状態を見てみましょう。一度それを行うと(シングルスレッドアプリケーションの場合でも)、アプリケーションの各「モジュール」を他のモジュールと(アプリケーションのアーキテクチャを認識して)見ているだけでなく、マルチスレッドを理解することは、ケーキ - 同期が必要な場合を除いて、シングルスレッドとは何も変わりません。 –