白旗製作所

Javaでマルチスレッド

JavaでGUIを触っていて、重めの処理をしたときにGUIが固まってしまい、
処理がおわるまで反応しなくなったことがありました。

これを避けるには、処理を別スレッドにすれば良いということで、
マルチスレッド化をしましたので、それについて少しメモしておきます。

現在のスレッドと別のスレッドを用意して処理させるには、基本的に以下を書けばよいです。

【GUIのクラス内の処理】
  Test test = new Test();
  Thread thread = new Thread(test);
  thread.start();

【重い処理を記述するクラス】
public Test implements Runnable{
  ...
  public void run(){
  hogehoge(); //何か重い処理
  }
  
  private void hogehoge(){
    ...
  }
}

何をやっているのかというと、GUIクラスでは
Thread thread = new Thread(test)
の箇所で、Testクラスのインスタンスtestを使って、threadという新たなスレッドを作り、
thread.start();
で、test.run()をスレッドthread内で動かしています。

Testクラスでは、run()の中に、別スレッドで行わせたい処理hogehoge()を書いておき、
Runnableというインターフェースをimplements しておきます。


こうすることで、重い処理であるhogehoge()を別スレッドで呼び出すことができるため、
GUIが固まることを回避できます。


上記ではGUIクラスから別スレッドを呼び出しましたが、
当然ながら、GUIクラスを別スレッドとして生成してもよいでしょう。


また、わざわざ別クラスを用意するほどでもなかったりする場合、
以下のようにRunnable()クラスのインスタンスを作って、直接処理を記述することも可能です。

Thread thread = new Thread(new Runnable(){
  public void run(){ hogehoge(); }
});
thread.start();



スポンサーサイト
  1. 2015/03/08(日) 22:18:48|
  2. Java
  3. | トラックバック:0
  4. | コメント:0

windows環境でTexWorksとBibTexを使う

ちょっと必要に迫られて、就職以来触ってなかったtexを再度触ったんですが
環境が自宅PCになかったため環境構築からやり直さざるを得ず、ハマったとこがあるのでメモしておきます。

まず、以下を参考にTexWorksがWindows(Shift_JIS)で動く環境を用意しました。
簡単LaTeXインストールWindows編(2014年7月版)

こりゃサクサクtex環境構築出来て便利だなあと思った矢先、
BibTexでつまづきました。

hogehoge.bibで参考文献リストを作成して、
\bibliographystyle{}と\bibliography{}で指定して、
\citeで引用しようとしたのですが、
表示されたのは
[?]
という文字。

なんでじゃーとおもったら、どうやらTexWorksでは
以下の記事にあるように、pBibTexの設定が必要のようです。
TeXworks+JabRefで参考文献を表示させるときの注意点
設定→タイプセット→タイプセットの方法でpbibtex.exeを追加し、
引数に
・-kanji=Shift_JIS
・$basename
を追加します。
#元記事ではエンコードがUTF-8だったので、最初の引数は-kanji=utf-8になっていますが、
私はWindowsのデフォルト環境であるShift JISを使ってますので、変更しておきます。

これで、pLaTeX→pBibTeX→pLaTeX→pLaTeXと実行すると
[hogehoge 04]
と、ちゃんと引用してくれるようになりました。

  1. 2015/03/06(金) 00:28:04|
  2. tex
  3. | トラックバック:0
  4. | コメント:0

twitter

プロフィール

dededemio

Author:dededemio
某電機メーカーエンジニア。
真空管からプログラミングまでゆるゆると。

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

Java (8)
未分類 (0)
真空管 (2)
キー配列 (2)
電子回路 (1)
マイコン (1)
PC部品 (2)
VPN (1)
Android (2)
opera (3)
C# (0)
プログラミング (1)
FTP (1)
メール (1)
tex (1)
音源 (2)
Ubuntu (1)
Python (5)
ブログパーツ (1)
GitHub (0)
Gist (1)
Vivaldi (1)
WICED Sense (2)
害虫駆除 (1)

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

QRコード

QR