扫码关注官方订阅号
重复的启动销毁线程将会消耗很多资源,并不是合理的设计方式,目标是为了监听反馈的播放进度,为什么一定需要每次都新开一个线程呢?下面这种方式更为合理一些
新开一个线程,专门负责监听,正常状况下是wait住,如果有消息需要监听就监听。这里需要继承Thread重写run方法
每次新开一个歌曲时候,notify监听线程,并将新的player传递过去,即可重新监听
模仿下runloop 或者开源框架 用事件来做http://blog.ibireme.com/2015/05/18/runloop/
线程不会自动被杀,需要手动清除,由于Thread.stop()早已被deprecated,现在一般用interrupt来结束线程。如你的代码。把try-catch扩大到整个while循环。然后如果你要停止线程,在需要停止的时候调用thread.interrupt()即可。供参考。
public void run() { try { while (!Thread.interrupted()) { sleep(millis); if (player != null && player.isPlaying()) { mListener.onPlaying(player.getCurrentPosition(), player.getDuration()); } } } catch (InterruptedException e) { //添加退出前的处理 } catch (Exception e) { //如果是在I/O操作时被中断,抛出的异常会不一样,但也视为interrupted,添加退出前的处理 //两个catch可以合并 } }
java中最好干掉线程的方法我认为就是让它运行完成,你可以设置一个boolean 值只有为ture的时候才继续运行下去.
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
重复的启动销毁线程将会消耗很多资源,并不是合理的设计方式,
目标是为了监听反馈的播放进度,为什么一定需要每次都新开一个线程呢?
下面这种方式更为合理一些
新开一个线程,专门负责监听,正常状况下是wait住,如果有消息需要监听就监听。这里需要继承Thread重写run方法
每次新开一个歌曲时候,notify监听线程,并将新的player传递过去,即可重新监听
模仿下runloop 或者开源框架 用事件来做http://blog.ibireme.com/2015/05/18/runloop/
线程不会自动被杀,需要手动清除,由于Thread.stop()早已被deprecated,现在一般用interrupt来结束线程。
如你的代码。把try-catch扩大到整个while循环。
然后如果你要停止线程,在需要停止的时候调用thread.interrupt()即可。
供参考。
java中最好干掉线程的方法我认为就是让它运行完成,你可以设置一个boolean 值只有为ture的时候才继续运行下去.