java 创建的java线程的创建和启动为什么会结束

java 在线程a中创建线程b,然后结束线程a,会发生什么_百度知道
java 在线程a中创建线程b,然后结束线程a,会发生什么
class threadA extends thread{
public void run(){
catch(...){
Thread a=new threadA();
a.start();
这样会产生什...
我有更好的答案
变量是否释放,还要看作用域范围。。。。。。。。上面的写法可以,类变量等作用域范围较大变量,要重新初始化
为您推荐:
其他类似问题
线程的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Java创建与结束线程代码示例
转载 &更新时间:日 14:51:27 & 作者:专业搬砖工
这篇文章主要介绍了Java创建与结束线程代码示例,小编觉得挺不错的,这里分享给大家,供需要的朋友参考。
本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者。一些高级知识如线程同步、调度、线程池等内容将会在后续章节中逐步深入。
创建普通线程有两种方式,继承Thread类或实现Runnable接口。示例如下。
方法1:继承Thread类
创建方法示例:
public class MyThread1 extends Thread {
public void run() {
//TODO Auto-generated method stub
super.run();
System.out.println("Execute thread:MyThread1");
方法2:实现Runnable接口
创建方法示例:
public class MyRunnable1 implements Runnable {
public void run() {
//TODO Auto-generated method stub
System.out.println("Execute thread:MyRunnable1");
针对上述两种方法,调用线程开始运行的方法分别如下。
方式示例1:new MyThread1().start();
方法示例2:new Thread(new MyRunnable1()).start();
请不要采取已经过时(deprecated)的java.lang.Thread.stop方法,不论你因为何种原因需要暂停或完全结束当前正在运行的线程。
常见的退出线程的方法如下。
方式1:线程自动退出
线程执行完毕,自动退出。例如网络下载线程,当后台下载完后,线程自动退出。
方法2:使用interrupt主动退出
在主线程中,调用线程对象的interrupt()方法,设置线程状态。
final Thread t = new MyThread2();
t.start();
Thread.sleep(500);
} catch(InterruptedException e) {
e.printStackTrace();
t.interrupt();
在子线程中,调用isInterrupted()方法判断线程状态。如果返回true,则可以结束线程运行。如下示例代码,在线程中有一个while循环,每次循环都会判断线程状态,如果为true,则停止循环,退出线程。
public class MyThread2 extends Thread {
public void run() {
super.run();
while(true) {
// Cancel thread when call interrupt() method
if (Thread.currentThread().isInterrupted()) {
在主线程中调用interrupt设置状态,在子线程中通过isInterrupted获取状态,是最好的结束线程的方法。注意主线程中一旦调用interrupt,子线程中相关的sleep, wait方法在执行时会抛出InterruptedException异常,此时也可以通过捕获这种异常来结束线程。
方式3:使用预设标志主动退出
预设一个退出标志,通过判断标志的值结束线程运行。这种情况常见于循环执行中的任务。在每次循环时,判断标志值。如下示例,在线程while循环中判断mCancelFlag标志。
public class MyThread3 extends Thread {
private boolean mCancelF
public void run() {
super.run();
System.out.println("Thread start");
while (mCancelFlag) {
// Cancel thread when call interrupt() method
System.out.println("Thread over");
public void cancelThread() {
mCancelFlag =
当主线程希望主动结束线程时,调用线程的cancelThread方法设置mCancelFlag即可。
final MyThread3 t = new MyThread3();
t.start();
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
// stop thread
t.cancelThread();
如果在线程执行时,需要主动退出线程,最佳的方式为方法2。用户根据实际情况,例如更多的状态控制,也可以使用方法3。
一句话总结
创建线程:继承Thread类或实现Runnable接口。
结束线程:调用interrupt方法。
以上就是本文关于Java创建与结束线程代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:、、等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具进程与线程的一个简单解释三、创建线程的三种方式一、继承Thread1、定义一个类MyThread继承Thread,并重写run方法。2、将要执行的代码写在run方法中。3、创建该类的实例,并调用start()方法开启线程。代码如下:public class MainActivity extends AppCompatActivity {private final String TAG = this.getClass().getSimpleName();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创建该类的实例,并调用start()方法开启线程。MyThread myThread = new MyThread();myThread.start();}//1、定义一个类MyThread继承Thread,并重写run方法。class MyThread extends Thread {public void run() {//2、将执行的代码写在run方法中。for (int i = 0; i Log.d(TAG, "线程名字:" + Thread.currentThread().getName() + " i=" + i);}}}}四、实现Runnable接口1、定义一个类MyRunnable实现Runnable接口,并重写run方法。2、将要执行的代码写在run方法中。3、创建Thread对象, 传入MyRunnable的实例,并调用start()方法开启线程。代码如下:public class MainActivity extends AppCompatActivity {private final String TAG = this.getClass().getSimpleName();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创建Thread对象, 传入MyRunnable的实例,并调用start()方法开启线程。Thread thread = new Thread(new MyRunnable());thread.start();}//1、定义一个类MyRunnable实现Runnable接口,并重写run方法。class MyRunnable implements Runnable {public void run() {//2、将执行的代码写在run方法中。for (int i = 0; i Log.d(TAG, "线程名字:" + Thread.currentThread().getName() + " i=" + i);}}}}五、实现Callable接口Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。1、自定义一个类MyCallable实现Callable接口,并重写call()方法2、将要执行的代码写在call()方法中3、创建线程池对象,调用submit()方法执行MyCallable任务,并返回Future对象4、调用Future对象的get()方法获取call()方法执行完后的值代码如下:public class MainActivity extends AppCompatActivity {private final String TAG = this.getClass().getSimpleName();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//3、创建线程池对象,调用submit()方法执行MyCallable任务,并返回Future对象ExecutorService pool = Executors.newSingleThreadExecutor();Future f1 = pool.submit(new MyCallable());//4、调用Future对象的get()方法获取call()方法执行完后的值try {Log.d(TAG, "sum=" + f1.get());} catch (InterruptedException e) {e.printStackTrace();} catch (ExecutionException e) {e.printStackTrace();}//关闭线程池pool.shutdown();}//1、自定义一个类MyCallable实现Callable接口,并重写call()方法public class MyCallable implements Callable {@Overridepublic Integer call() throws Exception {//2、将要执行的代码写在call()方法中int sum = 0;for (int i = 0; i sum +=}}}}六、创建线程的三种方式对比一、继承Thread类与实现Runnable接口的区别我们都知道java支持单继承,多实现。实现Runnable接口还可以继承其他类,而使用继承Thread就不能继承其他类了。所以当你想创建一个线程又希望继承其他类的时候就该选择实现Runnable接口的方式。二、实现Callable接口与Runnable接口的区别Callable执行的方法是call() ,而Runnable执行的方法是run()。call() 方法有返回值还能抛出异常, run() 方法则没有没有返回值,也不能抛出异常。七、java终止线程的方法java终止线程的方法中断线程的方法有很多,最简单的是直接调用stop()和subspend()方法,但是这两种方法并不推荐使用,因为它们有可能导致数据的不同步而发生死锁现象。如果真的需要终止一个线程,可以使用以下几种方法:1、让线程的run()方法执行完,线程自然结束。(这种方法最好)2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,将flag的java终止线程的方法中断线程的方法有很多,最简单的是直接调用stop()和subspend()方法,但是这两种方法并不推荐使用,因为它们有可能导致数据的不同步而发生死锁现象。如果真的需要终止一个线程,可以使用以下几种方法:1、让线程的run()方法执行完,线程自然结束。(这种方法最好)2、通过轮询和共享标志位的方法来结束线程,例如while(flag){},flag的初始值设为真,当需要结束时,将flag的值设为false。(这种方法也不很好,因为如果while(flag){}方法阻塞了,则flag会失效)3、通过调用interrupt方法和捕获InterruptedException异常来终止线程。实际上最好的方法是使用线程池,当线程不用了,就让它sleep并放进队列中,这样可以最大限度地利用资源。如果需要免费的Dubbo、Redis、Netty、zookeeper、Spring cloud学习资料的可以加QQ本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。找找靓机百家号最近更新:简介:找靓机为大家提供最新最有趣的科技资讯作者最新文章相关文章java,线程问题,怎么判断线程是否结束啊_百度知道
java,线程问题,怎么判断线程是否结束啊
怎么判断线程是否结束啊,怎么写代码
我有更好的答案
通过Thread类中的isAlive()方法判断线程是否处于活动状态;线程启动后,只要没有运行完毕,都会返回true;除了上面一种还有两种;1,通过Thread.activeCount()方法判断当前线程的线程组中活动线程的数目,为1时其他线程运行完毕;2,通过java.util.concurrent.Executors中的方法创建一个线程池,用这个线程池来启动线程。启动所有要启动的线程后,执行线程池的shutdown()方法,即在所有线程执行完毕后关闭线程池。然后通过线程池的isTerminated()方法,判断线程池是否已经关闭。线程池成功关闭,就意味着所有线程已经运行完毕了;例如;
采纳率:100%
Thread thread = new Thread(.....);if(thread.IsAlive){}
本回答被提问者和网友采纳
为您推荐:
其他类似问题
线程的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java 创建的线程什么时候关闭_百度知道
java 创建的线程什么时候关闭
我有更好的答案
一般情况下,线程里面的代码执行完毕,这个线程就结束了,关闭了。如果线程是后台线程,那么当所有前台线程结束,这个后台线程不管有没有执行完毕,也会关闭。
采纳率:79%
来自团队:
run方法执行完了线程就关闭了
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 java创建线程池的方法 的文章

 

随机推荐