6

Javaで現在の時刻を取得する方法についてのOSの投稿がたくさんあることを私は知っています。しかし、PersonaクラスでgetAgeメソッドをコーディングすることを計画しています。問題は、メソッドが呼び出されるたびに現在の時刻を取得する必要があることです。10億のクライアントがgetMethodを実行するとします(ミリ秒、おそらく数秒の差があります)、そのような単純なことのために10億のオブジェクトが作成されます。私が行ったのは、Personで静的なメンバーを作成することだけだったので、Personはインスタンスを共有します。ただし、これによってオブジェクトの作成が妨げられることはありません。

public class Person{
//Some Attributes
private static Calendar now;
private Calendar birthDate;

public short getAge(){
now = Calendar.getInstance();

return  (short) (( now.getTimeInMillis() - birthDate.getTimeInMillis())/ 31536000000L;
}}

このようなヒープサイズを無駄にすることなくこれを実装しているライブラリを知っている場合。教えてください。

ありがとう。

4

3 に答える 3

9

を作成する必要はありません。静的メソッドから Calendarを取得できます。long

System.currentTimeMillis();
于 2012-10-30T14:27:39.203 に答える
6

カレンダーインスタンスを一度作成して、呼び出し続けることもできます。

calendar.setTimeInMillis ( System.currentTimeMillis() );

カレンダーインスタンスで現在の時刻を設定し、そのカレンダーオブジェクトを使用して日付の計算を行います。

于 2012-10-30T14:30:33.583 に答える
0

最適化された手段で取得されたタイムスタンプでは、取得されたタイムスタンプを意味のあるものにするために、どのような追加の処理/オーバーヘッドが必要になりますか?

http://joda-time.sourceforge.net

ライブラリで日付と時刻を処理する場合は、JodaTimeを使用してください。私は回避策を強打しません。

DateTime dt = new DateTime();  // current time

パフォーマンスが重要な懸念事項/制限の問題である場合は、テストを実行して、受け入れる回避策がコードの可読性を上回る非機能的な結果を達成することを確認することをお勧めします。

于 2012-10-30T14:30:41.867 に答える