社内ネットワークでAndroidアプリをGradleビルドする際にプロキシ設定が必要だったのでそのメモ。 gradlewファイルへの設定 Gradle実行時にUnknownHostExceptionが発生して失敗してしまったので設定しました。 gradlew または gradlew.bat の先頭に以下を追記します。 set JAVA_OPTS=-DproxyHost=myproxy.co.jp -DproxyPort=8080 -Dhttp.proxyUser=**** -Dhttp.proxyPassword=**** -Dhttps.proxyUser=**** -Dhttps.proxyPassword=**** gradlew実行時に、GradleのZIP(gradle-1.xx-all.zip)がない場合は取得に行くので必要となります。 ZIPファイルをダウンロードした後は設定
例外が発生するとロックの解放が行われなくなり、デッドロックが発生する可能性がある。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()メソッドを呼び
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>
はじめに 今回はJavaのマルチスレッドの実装方法について解説します。 マルチスレッドは複数の処理を並行して行いたい場合に使用します。 また、マルチスレッドはThreadというクラスを使用するのですが、 Threadクラスでよく使用するメソッドを紹介したいと思います。 以降、以下のバージョン、環境での解説となります。 IDE:eclipse Javaバージョン:8 OS:Mac OS それでは、早速解説していきます。 1. フォルダ構成 今回作成するサンプルソースのフォルダ構成は以下の通りです。 2. マルチスレッド処理の実装 2-1. サンプルプログラム概要 今回サンプルで実装する内容ですが、メインクラスである「Main.java」を起動し、サブクラスである「SubThreadA.java」と「SubThreadB.java」を並列でスタートさせるという基本的なプログラムを実装します。
インスタンスとオブジェクトは混同しがちで区別がようわからんになりがちです。 とりあえず某所で説明したものを再構成します。 ※2022/12/10追記: クラスに対するのはインスタンスになるべき(たとえばクラス変数とインスタンス変数)なので、ちょっと修正するべきですが、このエントリはそのまま残してます。 クラス・インスタンス・オブジェクト クラスをインスタンス化(実体化)したものがオブジェクト(物)です。 実際に在るものはクラスとオブジェクトで、インスタンスはそれらの関係です。colorsやsportsが並んでるツリーが「オブジェクト」で、右のパレットに並んでるTreeが「クラス」、Treeからみたときのツリーが「インスタンス」ということになります。 ここでツリーはオブジェクトでもインスタンスでもあります。 このように、同じものをオブジェクトともインスタンスともいうことができるので混同してし
原文はこちら。 This article was written by Geoffrey De Smet (Lead and founder of OptaPlanner). https://www.optaplanner.org/blog/2021/09/15/HowMuchFasterIsJava17.html (訳注)日付に関する情報は原文のまま訳しています。 Java 17 (昨日リリースされました)が多数の新機能や改善を伴って登場しました。しかし、そうした新機能などのメリットを享受するためにはコードの変更が必要です。でもパフォーマンスについては別です。シンプルにJDKを置き換えれば、お金をかけずにパフォーマンスを改善できます。しかしながら、どれぐらい改善するのでしょうか?置き換える価値はあるのでしょうか?それでは、JDK 17、JDK 16、JDK 11のベンチマークを比較してみ
DX(デジタルトランスフォーメーション)やIoT(Internet of Things)の進展により、ますますその存在感が増しているオープンソースソフトウェア(OSS)。ソフトウェアの高機能化、大規模化によるサプライチェーンの複雑化を背景に、SBOM(Software Bill of Materials)によるOSSサプライチェーンマネジメントに注目が集まっています。米国では既に必須化・標準化の動きが始まっており、日本企業も対応を迫られるようになってきました。本記事では、あらためてSBOMとは何か、そして日本におけるSBOM活用の普及促進にはどういった課題があるかについて、詳しく解説します。 SBOMとはいったい、どのようなものなのか Software Bill of Materials(SBOM、「エスボム」と読みます))とは、ソフトウェアを構成するOSSや商用ソフトウェアなどのライブラ
Java SE7 までのインタフェースに定義できるメソッドは「抽象メソッド」のみでした。 Java SE8 のインタフェースには、default というキーワードを記述することによって「具象メソッド」も定義可能になりました。 このメソッドのことを「デフォルトメソッド」といいます。 以下が使用例となります。 public interface Employee { void setId(Integer id); default Integer getId() { return 0; } void setName(String name); default String getName() { return "No Name"; } }
マイクロソフト、Eclipse Foundationの「Jakarta EE」および「MicroProfile」ワーキンググループに参加表明。Javaへのコミットメントをさらに強める マイクロソフトはEclipse Foundationがホストしているエンタープライズ向けのJavaフレームワーク「Jakarta EE」と「MicroProfile」のワーキンググループに参加すると表明しました。 Exciting news! @Microsoft has officially joined the #JakartaEE Working Group as an Enterprise Member. Read their new blog to learn about Microsoft's participation in #opensource Java: https://t.co/pWDE
連載初回となる今回はなにはともあれまずはMicroProfileそのものについて、概要から説明していきたいと思います。 Javaのエンタープライズの標準仕様はなんですか?と問われたら、みなさんはなにを頭に浮かべるでしょうか?そもそも「Javaのエンタープライズ」ってなんだよ?とは思いつつも、多くの方はJava EEもしくはJakarta EE、そしてもしかしたらJ2EEと言った単語を浮かべるのではないかと思いますが、いずれも正解です! MicroProfileを語る上で標準であるJakarta EE(Java EE/J2EE)は切っても切り離せない関係にあります。ですので、MicroProfileの説明に行く前にまずは軽くJava EEのおさらいから始めたいと思います。 Java EEは1999年12月にエンタープライズ向けのエディションとして当初はJ2EEとして世にでました。エンタープラ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く