白旗製作所

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