java 线程怎么退出 run 方法执行完了,线程就结束了,不需要人为退出start方法在底层是调用run方法,所以,一般线程做事情都在run方法里面写 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是执行完void run()的代码就自动退出,还是要人为的使其退出?-> 执行完 void run() 的代码就自动退出; 还有线程开始后如t.start();,它之后的代码是立即执行还是要到执行完void run()的代码之后再执行?-> t.start(); 之后的语句可能在 run() 代码前执行,也可能在 run() 执行后执行,如果语句比较多,那可能就和 run() 方法里的语句交叉执行了。 要让线程自然执行完成。如果线程需要时间比较长,一般是由于循环问题,所以要设置一个标记flag运行就让其为true,要让其停止就设置为false. 线程内部处理 加 ExecutorService.shutdown(); 1楼误解。start没有调用run,而是调用其他方法(native方法)启动线程,而此启动的线程中间接调用Runnable的run方法。可以说,run方法的内容,基本上就是线程执行的内容了,其他内容是jvm附加上的,你也干预不了。run结束,不管是执行到最后一行,还是return,还是抛出异常,都会导致这个线程结束。 以前线程是有人为退出的,但很快,好像就是1.1,1.2版本的时候就不赞成使用了。所以线程中有循环,特别是无限循环的话,我一般都是通过判断一个变量是否为false,若为false了,那么就退出循序,线程也就自然终止了。t.start()启动线程后,之后的方法立即执行,不必等到run方法执行结束,否则线程也就没意义了 startpublic void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。 抛出: IllegalThreadStateException - 如果线程已经启动。另请参见:run(), stop()回家好好把书看看,native是由虚拟机调的,你编程要看虚拟机编程么? 有人为退出的方法,stop(),不过由于人为结束线程极易造成死锁,所以Java已经把类似的方法都deprecate了。程序员应该让线程自然结束(从run()方法中返回)。 就写在run方法里就行了吧,run完了就完了 public void run(){ while(b) { //执行的代码。 }}b 为false 线程停止。。 执行完run方法就自动退出了。start之后的代码与run的代码可以说是2个不同的线程,执行的顺序就看cpu了,各种情况都有可能的 stop()过时了,容易造成线程安全,不要用 没有安全问题的就直接用stop很好用 run()方法执行完以后该线程就会自动退出,不过也可以在run()方法里面设置一些标志位来控制退出;第二个问题楼主需要理解多线程的含义,当一个线程开始运行时,也就是t.start()之后,后面的代码会作为另外一个线程运行,此时,前后两个线程会分享CPU的时间片,正常情况下应该会交替运行. 线程怎么执行和什么时候执行的问题得去问操作系统的实现,在不同的实现上是不同的比如在windows和solaris下用的就是所谓的轻量级进程的概念,线程是建立在进程里面的一个调度、执行单元,而在linux下线程的实现和进程完全一样,只是线程之间共享内存空间等一些资源而在java中使用之需要知道run()方法结束后线程就中止了就行了,至于怎么结束那是操作系统的事情,和我们应用程序员没有关系 是的。t.stop();这个方法现在不提倡了,你可以通过给t=null让它不可用。 java游戏服务器 javaFX 点击一个窗体的按钮把另一个窗体显示出来 javaSE写一款桌面宠物游戏 javaSE小问题? Arrays.toString的回转 用java写收发邮件的程序,求助!在线 这两个包有什么区别? 运行竟然只有窗口 没看到图形 请问jbuild6中怎样编译运行jdk开发的java程序 netty如何针对每个长连接进行管理 Struts2拦截器实验报告 java编译问题
还有线程开始后如t.start();,它之后的代码是立即执行还是要到执行完void run()的代码之后再执行?-> t.start(); 之后的语句可能在 run() 代码前执行,也可能在 run() 执行后执行,如果语句比较多,那可能就和 run() 方法里的语句交叉执行了。
start没有调用run,而是调用其他方法(native方法)启动线程,而此启动的线程中间接调用Runnable的run方法。
可以说,run方法的内容,基本上就是线程执行的内容了,其他内容是jvm附加上的,你也干预不了。
run结束,不管是执行到最后一行,还是return,还是抛出异常,都会导致这个线程结束。
t.start()启动线程后,之后的方法立即执行,不必等到run方法执行结束,否则线程也就没意义了
start
public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。 多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。
抛出:
IllegalThreadStateException - 如果线程已经启动。
另请参见:
run(), stop()
回家好好把书看看,native是由虚拟机调的,你编程要看虚拟机编程么?
public void run()
{
while(b)
{
//执行的代码。
}}
b 为false 线程停止。。
start之后的代码与run的代码可以说是2个不同的线程,执行的顺序就看cpu了,各种情况都有可能的
第二个问题楼主需要理解多线程的含义,当一个线程开始运行时,也就是t.start()之后,后面的代码会作为另外一个线程运行,此时,前后两个线程会分享CPU的时间片,正常情况下应该会交替运行.
比如在windows和solaris下用的就是所谓的轻量级进程的概念,线程是建立在进程里面的一个调度、执行单元,而在linux下线程的实现和进程完全一样,只是线程之间共享内存空间等一些资源
而在java中使用之需要知道run()方法结束后线程就中止了就行了,至于怎么结束那是操作系统的事情,和我们应用程序员没有关系