首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

「线程」 为啥停止以后就不能再启动了

2012-09-06 
「线程」 为何停止以后就不能再启动了?我写的一个刷新歌词的线程,提供了启动和停止功能,但是现在的情况是停

「线程」 为何停止以后就不能再启动了?
我写的一个刷新歌词的线程,提供了启动和停止功能,但是现在的情况是停止以后再启动,就会后报错
thread already started

上代码

Java code
/**     * 歌词线程     *      * @author 赵占涛 <a href="http://www.baisoft.net">百元软件工作室</a> zhaozhantao@21cn.com QQ:369880281     *     */    class LyricThread extends Thread{        /**         * 正在播放否?         */        private boolean playing;                /**         * 停止歌词滚动         */        public void stopScroll(){            playing = false;        }        @Override        public void run() {            while (playing){                lyricView.setTime(musicService.getCurrentPosition());                try {                    Thread.sleep(500);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }                /**         * 开始滚动         */        @Override        public void start(){            playing = true;            super.start();//错误报在了这一行**************************第一次没事,第二次就报错***************说已经started了,        }            }


[解决办法]
每次重新new LyricThread().start()就可以了。
[解决办法]
探讨

引用:

停过的线程是不能再start的。
你如果不想另外new线程对象的话,可以在run中不退出循环,只用playing字段的值决定是否做lyricView.setTime
看样子不new不行啊,不退出循环的话太浪费资源了吧

[解决办法]
貌似有一个唤醒线程的方法
[解决办法]
你的线程已经被杀死了,当然不能重新启动啊。(run方法结束后, 线程自然死亡)
你要挂起线程的话,用wait,唤醒用notify或notifyAll
[解决办法]
Run方法执行完了 线程就结束了

热点排行