携帯アプリにおけるマルチスレッディング(2)
自分が組んだ、マルチスレッドでの振動プログラム。
class Library extends Canvas implements Runnable{ private int vibTime; private boolean bVibrate = false; public void vibrate( int time ){ vibTime = time; if( vibTime > 0 ){ if( !bVibrate ){ bVibrate = true; Thread th = new Thread( this ); th.start(); } } } public void run(){ // vibration thread if( bVibrate ){ PhoneSystem.setAttribute( PhoneSystem.DEV_VIBRATOR , PhoneSystem.ATTR_VIBRATOR_ON ); while( vibTime > 0 ){ try{ Thread.sleep( 50 ); }catch( Exception e ){} vibTime -= 50; } bVibrate = false; PhoneSystem.setAttribute( PhoneSystem.DEV_VIBRATOR , PhoneSystem.ATTR_VIBRATOR_OFF ); return; } // main thread return; } }
呼び出し側がシングルスレッドである限りは大丈夫……だと思う(;´Д`)
追記:
あー、これだと、振動スレッド以外のスレッドを付け足したときに困るなぁ……。
synchronized使って同期を取らないと無理か……orz