⑴ java中,在线程中创建另一个线程,如果销毁前一个线程,那新线程会销毁吗
把待处理的对象放到一个阻塞队列里。往队列里填东西时 用new Thread(){ run(){queue.put()}},
在处理它的线程版run中, 还是那权个queue, queue.take();
put和take是一对可阻塞线程的方法。 BlockingQueue在初始化时是需要定个大小的,就是说这个队列最多有多少个东西。put在入里填东西时,如果queue满了,它会阻塞,直到有地方可填。所以你不能直接put,要new一个动态的线程出来,。 那处理它的方法中从里面往出take,如果没有东西可take,它也会阻塞,直到有东西它就往下执行。这样你就不用怕while(true)了,因为没东西可执行时,线程会在take处阻塞线程继续执行。
虽然过一年半了,但是我网络东西时摆到这儿了,就试着也答答。
⑵ java 子线程运行完后会自动销毁吗
托管的东西,其运行完毕就会标记本资源可以被释放以及回收,如果没有手动释放的话,GC会帮你做.
GC指的是java的垃圾回收机制
⑶ 在Java中 请问一个线程执行完run方法之后是如何做到自我销毁的啊
执行完线程中的所有代码后,线程就自动结束并自我销毁,无法再次调用start
⑷ java线程执行完后自己结束吗
其实最佳答案的说法抄是有问题的,如果题主指的结束,是指方法块语句的执行结束的话,热心网友的说法是对的。但是对于线程本身,所有线程(包括主线程)在启动后都被CPU参照优先级交替调用,运行的顺序是无法预测的,但最后结束的一定是主线程。
网上有部分说法,展示的代码运行结果,“主线程先于其他线程结束,并不影响其他线程的运行”只有后半部分是对的。因为方法体(不管是自定义线程的run()还是主线程的main())中全部语句的执行完毕不代表所在线程的结束,可以用activeCount()返回当前运行的总线程数来验证这一点。另外,如果将自定义的线程对象设定为守护线程(setDeamon()),也可以很清楚看到即便main()方法中最后一句输出语句执行完毕,控制台仍会根据该自定义线程run()方法体的内容继续输出,这证明主线程还没结束——因为当线程组中只剩下守护线程时,JVM虚拟机会自动退出,如果主线程已经结束,唯一活动的线程在被设置成守护线程的情况下,程序会直接结束运行,不可能继续输出。
⑸ java线程是否可以重用,是不是一个线程执行完了就销毁了
把待处理的对象放到一个阻塞队列里。往队列里填东西时 用new Thread(){ run(){queue.put()}},
在处理它的线程run中,专 还是那个queue, queue.take();
put和take是一对可属阻塞线程的方法。 BlockingQueue在初始化时是需要定个大小的,就是说这个队列最多有多少个东西。put在入里填东西时,如果queue满了,它会阻塞,直到有地方可填。所以你不能直接put,要new一个动态的线程出来,。 那处理它的方法中从里面往出take,如果没有东西可take,它也会阻塞,直到有东西它就往下执行。这样你就不用怕while(true)了,因为没东西可执行时,线程会在take处阻塞线程继续执行。
虽然过一年半了,但是我网络东西时摆到这儿了,就试着也答答。
⑹ java销毁线程池
你是用Java自带的ExecutorService这个线程池么?如果是的话,ExecutorService自身会管理池中的线程,不需外界手动干预。
如果是自己写的话,必须在线程池内的线程加入退出判定,要不然的话是没法从线程外结束线程的。(你也不应该这样做,因为这样会导致验证的资源泄漏)
⑺ 怎么销毁java中的线程
thread可以用destroy方法销毁,但它不保证资源被释放,所以只能用在无资源的情内况下。一般都自行容控制代码逻辑让run()方法正常执行完,常用的方法包括可以被打断(在代码里检测interrupted())、检测状态标识退出循环等。