最赞回答 / 福工刘德华
实际上这个线程不止一个,还有一个线程是负责启动main负责启动每一个线程,而main中的那个Thread.sleep是使main线程休眠,而run方法中的sleep是让实例化的那条线程休眠,而你在main方法中用interrupt停止实例化的那条线程就会导致api里面所谓的报错,我认为你是错将main方法中的停止main线程的Thread.sleep认为是停止实例化的那条线程,导致这种疑问出现
2017-11-13
确实有些关键的点并没有进行说明,不过还是感谢老师。调用start()方法时,会自动调用run方法,如果使用Runnable接口创建线程,那么就得重写run(),因为此方法是Runnable接口的唯一方法。
2017-11-08
最新回答 / Queen丶Star
大兄弟,那不是快捷键,,那是视频剪辑的问题,不是点了thread 后弹出来的方法补充。 继承一个类也基本不会出现一个方法继承的警告吧,如果你说要快速, 你可以直接写一个run 智能提示alt+/ 能帮你快速生成。。。
2017-11-08
关于volatile修饰的退出标志keepRunning正确退出进程的流程
1.军队进程每次进攻完 执行yield方法 释放处理器资源
2.当stage进程在获取到军队进程释放的资源,执行到设置keepRuning=false语句之后,调用sleep方法使得stage进程进入休眠状态(此时stage进程不再参与资源竞争,保证军队进程可以竞争到处理器资源)
3.军队进程获取到资源,且停战标志keepRunning被之前的stage进程设置为false
4.军队进程此时根据上下文环境将run方法内剩余语句执行完,(for循环内的进攻语句接着上一次标志进攻次数的i变量执行)
5.军队进程正确结束
1.军队进程每次进攻完 执行yield方法 释放处理器资源
2.当stage进程在获取到军队进程释放的资源,执行到设置keepRuning=false语句之后,调用sleep方法使得stage进程进入休眠状态(此时stage进程不再参与资源竞争,保证军队进程可以竞争到处理器资源)
3.军队进程获取到资源,且停战标志keepRunning被之前的stage进程设置为false
4.军队进程此时根据上下文环境将run方法内剩余语句执行完,(for循环内的进攻语句接着上一次标志进攻次数的i变量执行)
5.军队进程正确结束
2017-11-01