Javaのスレッド(thread)とは、プログラム上で複数の処理を同時に動かす仕組みです。スレッドをJavaで使うためのクラスjava.lang.Threadを指す言葉でもあります。 さて、多くの作業は人が手分けすれば早く終わります。違う作業であっても、それぞれの作業へ人を割り当てれば同時に行えます。当然、一人での作業より効率的です。 それと同じで、プログラムでも処理を複数同時に動かせば、短い時間で効率よく処理できます。その仕組みがスレッドです。スレッドは、今ではごく当たり前に使われているのです。 この記事では、Javaでのスレッドの考え方・使い方の基本から、スレッドを使う上で気を付けたいこと、スレッドに関する話題について、ポイントを絞って初心者向けに説明します。 ※この記事はJava 13時点の言語仕様・APIに基づいています。サンプルはJava 13の環境で動作確認しています。 1.ス
Much of Gradle’s functionality is delivered via plugins, including core plugins distributed with Gradle, third-party plugins, and script plugins defined within builds. Plugins introduce new tasks (e.g., JavaCompile), domain objects (e.g., SourceSet), conventions (e.g., locating Java source at src/main/java), and extend core or other plugin objects. Plugins in Gradle are essential for automating co
To prepare your software project for growth, you can organize a Gradle project into multiple subprojects to modularize the software you are building. In this guide, you’ll learn how to structure such a project on the example of a Java application. However, the general concepts apply for any software you are building with Gradle. You can follow the guide step-by-step to create a new project from sc
「Rust 1.64.0」ではまず、CプログラムとABI(Application Binary Interface)を通して連携するときに、コードを記述しやすくなった。かつて、このようなときは「c_uint」や「c_ulong」などの型(まとめて「C_*」と呼ぶ)を使用していたが、これらの型は「std」ライブラリでしか使えなかった。それが今回の新版からは、「core」や「alloc」といったライブラリでも使えるようになった。 また、「IntoFuture」トレイトを安定化させた。これは「.await」構文と一緒に使うもので、.awaitで受け取る値として、幅広い種類のものを受け取れるようになり、その値をIntoFutureで変換できる。 さらに、Rust言語のLanguage Server Protocol実装である「rust-analyzer」を、「rustup」コマンドでインストールで
Overview What is Gradle? Quick Start Releases All Releases Release Notes Installing Gradle Upgrading Gradle version 8.X to latest version 7.X to 8.0 version 6.X to 7.0 version 5.X to 6.0 version 4.X to 5.0 Migrating to Gradle from Maven from Ant Troubleshooting Compatibility Notes Gradle's Feature Lifecycle Running Gradle Builds Getting Started Learning the Basics 1. Gradle Basics 2. Gradle Wrappe
例外が発生するとロックの解放が行われなくなり、デッドロックが発生する可能性がある。Java API [API 2006] には以下のように記載されている。 ReentrantLock は、最後にロックに成功したがまだロック解放していないスレッドにより「所有」される。ロックが別のスレッドに所有されていない場合、ロックを呼び出すスレッドが復帰してロックの取得に成功する。 つまり、解放されていないロックを他のスレッドが取得することはできないということである。例外が発生したら、プログラムは所有しているすべてのロックを解放しなければいけない。一方、メソッド同期およびブロック同期で使用されている固有ロックは、スレッドの異常終了のような例外発生時には自動的に解放される。 違反コード (チェック例外) 以下の違反コード例では、ReentrantLock を使用してリソースを保護しているが、ファイルの操作中
Java言語仕様では、64ビットのlong型およびdouble型の値を、2つの32ビット値として扱うことが許されている。たとえば、64ビット値の書込み操作は、2つの独立した32ビット値の操作として実行される可能性がある。 Java言語仕様の17.7節「doubleとlongの非アトミックな扱い」には以下のように記されている。[JLS 2005] ... こうした振る舞いは実装依存である。つまり、Java仮想マシンはlong値やdouble値の書込みをアトミックな動作として実行するか、あるいは、二つの動作として実行するかを自由に決定することが許されている。プログラミング言語Javaメモリモデルでは、volatileでないlong値やdouble値への単一の書込みは、それぞれ32ビットずつの二つの書込みとして扱われる。結果的に、ある64ビット値の書込みの最初の32ビットと、他の書込みによる次の
既知のすべてのサブインタフェース: RunnableFuture<V>, RunnableScheduledFuture<V> 既知のすべての実装クラス: AsyncBoxView.ChildState, ForkJoinWorkerThread, FutureTask, RenderableImageProducer, SwingWorker, Thread, TimerTask 関数型インタフェース: これは関数型インタフェースなので、ラムダ式またはメソッド参照の代入先として使用できます。 @FunctionalInterface public interface Runnable インスタンスを1つのスレッドで実行するすべてのクラスで、Runnableインタフェースを実装する必要があります。このクラスは、引数のないメソッドrunを定義しなければいけません。 このインタフェースは、アク
スレッドの開始方法は誤解しやすい。スレッドで実行したい処理をコード上は正しく実行しているように見えても、実際には間違ったスレッドによって実行してしまっていることがある。Thread.start()メソッドを呼び出すと、Javaの実行環境は新たに開始したスレッドの上で、そのスレッドのrun()メソッドを実行する。Threadオブジェクトのrun()メソッドを直接呼び出すのは間違いである。直接呼び出した場合、run()メソッドのなかに書かれた処理は、新規に生成されたスレッドではなく、呼出し元のスレッドにより実行されてしまう。また、Threadオブジェクトが、Runnableオブジェクトから生成されるのではなく、run()メソッドをオーバーライドしていないThreadのサブクラスをインスタンス化することによって生成される場合、サブクラスのrun()メソッドはThread.run()メソッドを呼び
ソフトウェアテスト技術者資格認定組織(JSTQB)は、 CBT(コンピュータ・ベースド・テスティング) による試験実施を 2022 年 10 月 3 日(月)より開始いたします。 対象となる試験は、Foundation Level 試験(CTFL)と Advanced Level テストマネージャ試験(CTAL-TM)です。 試験の申し込み CBT を運営するピアソン VUE の申し込みページから手続きを行ってください。 https://www.pearsonvue.co.jp/jstqb 申込みの際に「JSTQB 認定試験申し込み Web サイト」のアカウントが必要になります。 ピアソン VUE の申し込みページのリンクから「JSTQB 認定試験申し込み Web サイト」に移動してアカウント登録を行ってください。 ※2022 年 10 月 3 日よりアカウント登録の WEB サイトにアク
日々いろんな npm パッケージに依存してるわけですが、その作者が気になるときがある。 単純に気になるときもあるけど、調査が必要になるときもある。 たとえば最近 substack の GitHub アカウントが削除された。npm から消えたわけじゃないから、すぐに困るってことはないけど、誰にも移譲されていないリポジトリがあっとして、もし自分がそれに依存してしまっていたら代替を探したくなる。 また、自分が関わっている OSS プロジェクトでは過去のメンテナーが作ったたくさんのライブラリに依存していて、その人がすでにアクティブでなくなったいるため、やや悪い影響が出始めていたりする。 そのため、自分の依存している npm パッケージの作者をシュッと調べて、フォークするか移管してもらうか色々判断できると便利である。 ということでそれに役に立つツールを作った。 npm に publish してあるの
The reference documentation is divided into several sections:
java.lang クラス Runtime java.lang.Object java.lang.Runtime public class Runtimeextends Object Java アプリケーションはすべて、Runtime クラスの単一のインスタンスを持ちます。 このクラスは、アプリケーションとアプリケーション実行環境とのインタフェースになります。現在の実行時オブジェクトは、getRuntime メソッドにより取得できます。 アプリケーションは、自分の Runtime クラスのインスタンスを生成することはできません。 導入されたバージョン: JDK1.0 関連項目:getRuntime() メソッドの概要
<noscript> <div>JavaScriptがブラウザで無効になっています。</div> </noscript> <h2>フレーム関連の警告</h2> <p>このドキュメントはフレーム機能を使って表示するように作られています。フレームを表示できないWebクライアントの場合にこのメッセージが表示されます。<a href="overview-summary.html">フレームなしバージョン</a>へのリンク。</p>
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く