- ベストアンサー
iアプリのTimerListenerイベントはマルチスレッドで動きますか?
iアプリを作っているのいるのですが、Timerを使った処理をやっております。聞きたいことは、TimerListener の timerExpired() と processEvent() は一つ一つ発生するのか、それともマルチスレッドのように同時に発生する可能性があるのかということです。もしマルチスレッドのような動作をするのなら、同じ変数の書き換えが起こるところは競合しないような配慮が必要だと思うのですが、一つ一つ起こるのなら、その必要はありません。 機種はFOMAの903です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- 504i用のiアプリってFOMAからでもできる?
最近504用のiアプリがお目見えしました。 私は現在211使用なのでどちらにしてもできないんですが…。 近いうちにFOMAに買い換えようと思っています。(N2051か近いうちに出ると言われているPの新機種) このFOMA機種で504用のiアプリってできるんでしょうか?
- マルチスレッドの確認
いつも参考にさせて頂いています。 現在JavaにてWEBアプリを開発中です。 頻繁に多画面から同じオブジェクトへの参照が発生するため、インスタンス変数をsessionに格納し、syncronizedで同期化を図っていました。しかしシングルスレッド対応になってしまったため、レスポンスが悪化しました。そこでインスタンス変数をローカル変数にしてしまい、syncronizedをはずし、マルチスレッドで動くように対応してみたのですが、マルチスレッドで動いているかどうかっていうのはどう確認したらよいのでしょうか?うまく説明できなくて申し訳ありませんが宜しくお願いします。
- ベストアンサー
- Java
- iアプリがつくりたい。
iアプリが作りたくなりました。 プログラミングは初めてではありませんが、JAVAは初めてです。 ホームページ作成は初めてではありません。 自分が持っているのがFOMAなのでFOMA対応のものを作成しようと思っています。 特に何という希望はありませんが、最初は簡単なゲームでも…というところです。 こんな私にピッタリの書籍はありますか? またJAVAでiアプリを作成するのにはどんな環境が必要でしょうか? 追加質問なんですが、みなさんだったらどんなiアプリが欲しいですか?
- ベストアンサー
- デザイナー・クリエイティブ職
- VB.NET開発(イベントプロシージャはマルチスレッドですか?)
VB.NET開発(イベントプロシージャはマルチスレッドですか?) 以前より.NETのWindowsフォームの業務アプリ開発してますが、基本的な質問をさせて下さい。 イベントプロシージャの実行処理は、本体スレッド(実行時のスレッド)とは別のスレッドで動作しているのでしょうか。 例えば、ボタンのクリックイベントに何かしらの重い処理があったとします。このクリックイベントの処理ではボタンの制御をしていないので、イベントプロシージャの実行中は、処理中のボタンが押下可能な前提とします。この時、このボタンを3回押下して実行させると3つのスレッドが新規に作成されて実行していると考えて宜しいのでしょうか。 デリゲートやイベントに関するキーワードで検索して、いくつか資料を見たのですが、上記の疑問にぴったり合う解答がなく、質問させて頂きました。 業務アプリの開発で、今まで、あまりマルチスレッドなど意識せずやってきましたが、実は意識しなくても、マルチスレッドの開発をしていたことになるのでしょうか。 以前、VB6の開発もしておりました。 ちなみにVB6の場合も、イベントプロシージャはマルチスレッドで実行されていると考えて宜しいのでしょうか。 よろしくお願いします
- ベストアンサー
- Visual Basic
- マルチスレッドの疑問点と配列について
こんばんわ。 VC++.NET2003を用いて、C言語プログラミングを行っています。以下に質問内容をまとめます。 1.現在、マルチスレッドを行っています。マルチスレッドの注意点として、 ・スレッドが複数同時に処理(現在2スレッド)され、それぞれのスレッドで同一のグローバル変数をアクセスする。 ・各スレッドで使用しているスタティック変数はプロセスとして1つの領域に確保される。 と記述されていました。 現在、2スレッド動かしているのですが、2スレッド共通で使用したい変数がある場合は、グローバル変数として宣言してよいのでしょうか? スタティック変数というのは、 static int i を指すのでしょうか・・・・初心者的発言で申し訳ありません。 次にもう一つ質問させていただきます。 配列を整数型で10000要素、静的に用意します。 これを、memset関数ですべての番地に0を初期値として入れておきます。 たとえば、9000という数字があった場合、9000番に整数値9000を格納する。また、56では56番に56を格納する。 そして、最終的に10000要素を走査し0の場所をカウントする。 ということは可能でしょうか?もしよろしければ、サンプルを教えていただきたいと思っています。 よろしくお願い致します。
- ベストアンサー
- C・C++・C#
- マルチスレッド化。
今とても大きな配列を使用し、長時間処理をするプログラムを組んでいます。元々処理時間に1時間を要するプログラムを2分で処理を完了するまでに仕上げました。 しかし、探究心はおさまらずもう少し高速化に挑みたいと考えています。 過去に「猫でもわかる」のSDK第1章と2章を学び、マルチスレッドのプログラムをSDKで組んだことがあります。それを利用してマルチスレッド化を実現したいと考えています。 言語はCでVisualStudio2005を使用しています。 *疑問1 SDKの場合WinMain関数とプロシージャからの実行で_beginthread関数を記述すれば処理が開始されます。 Cでもmain関数内に記述すれば、SDKと同様に処理できるのでしょうか? *疑問2 _beginthread関数の引数に関してです。 第1引数にvoid型のスレッド関数、第2引数に0?、そして第3引数にはスレッド関数に渡すデータの引数を記述すると把握しているのですが、渡したいデータは複数あり、***型と**型、それに変数を数個とスレッド関数に渡したいデータだらけなのですが、どのように記述すればよいでしょう? *疑問3 2つのスレッドを作成しようと考えていますが、その2つのスレッドで1つの大きな配列を共有して処理したいと考えています。 そのため、スレッド間の同期が必要になるわけですが同期の種類にもクリティカルセクションやミューテックス、イベントと豊富でどれを使用すれば良いのか迷ってしまいます。厳密に同期を取り処理をするにはイベントが一番良いと考えています。 これらの疑問に答えられる方はアドバイスをよろしくお願いします。
- ベストアンサー
- C・C++・C#
- iアプリ作成
こんにちわ、iアプリ作成について質問させてください 現在iアプリを作成して、エミュレータ(i-jade N503)にて動作確認を行い、それをWEB上に置いて実機(D503)にて動作確認をしたのですが起動後すぐにiアプリが落ちてしまいました。 というわけで、質問なんですが エミュレーターで動作しても実機では動作しない理由としてはどのような原因が考えられるでしょうか? なにか情報をご存知の方いらっしゃいましたらお教え願いますm(_ _)m ちなみに内部では long型で定義されている180個のデータをテーブルでもっており。 Randomによる乱数発生とlong型*long型による計算を20回~40回ほどひたすらに行っています。 間にはwaitとしてThread.sleep(100)が入っていますが消しても変わりありませんでした。
- ベストアンサー
- Java
- マルチスレッド下でのインスタンス変数・クラス変数
よろしくお願いします。 マルチスレッド下で動作するクラスを作成しています。データにアクセスするためのオブジェクトを クラスのフィールド値として保持し、使い回しを行いたいと考えています。このデータアクセスオブジェクト(以下Dao)内では特にフィールドは使用せず、全てローカル変数のみで動作するようになっています。Dao自体は初回のクラス生成時にstatic処理にてフィールドにセットされます。 このDaoを保持するフィールドは、staticなクラス変数が良いのか、インスタンス変数として保持する方が良いのか迷っております。 クラス変数ならばPermanent領域をオブジェクト1つ分のメモリ使用で済み、インスタンス変数だとスレッド毎にheapを使い、処理数が増えるとメモリ圧迫しちゃう?と安易に考えてしまったりしています。 ご意見・ご助言よろしくお願い致します。
- ベストアンサー
- Java
- iアプリで休眠モードになるときの画面表示について
iアプリで「非活性モードから一定時間が経過すると休眠モードへ移行する」処理をする際、 以下のコードで「10:非活性状態です」の表示のまま休眠モードになってしまいます。 (「0:休眠状態です」の表示にしてから休眠モードにしたい。) (2台の携帯電話で実行しましたが、同じになります。) 原因がわかる方、アドバイスをお願いします。 //一部省略しています //変数 mode(活性=2・非活性=1・休眠=0) public void processEvent(int w_type,int w_param) { // タイマーイベント発生の場合に処理 if ((w_type==Display.TIMER_EXPIRED_EVENT) && (w_param==w_timerID)) { counter++; //←時間をカウントしています if(mode == 1 && counter > 10) { //10カウントで休眠状態へ mode = 0; repaint(); counter = 0; timer.stop(); sleep(); } repaint(); } } public void paint(Graphics g) { if(mode == 0) { g.drawString(counter+":休眠状態です", 50, 50); } else if(mode == 1) { g.drawString(counter+":非活性状態です", 50, 50); } else { g.drawString(counter+":活性化状態です", 50, 50); } }
- ベストアンサー
- Java
お礼
ご回答ありがとうございました。 processEvent();で実行していたときには何の問題も発生していなかったのが、時間が来たらtimerExpired()で実行するようにしてから時々予期しない動作が起こるようになったのですが、いろいろ調べて synchronized を使うようにしたら問題はなくなりました。ありがとうございました。