本文讲述了在Java中如何创建和结束线程的最基本方法,只针对于Java初学者。一些高级知识如线程同步,调度、线程池等内容将会在后续章节中逐步深入。
<>强创建线程强>
创建普通线程有两种方式,继承线程类或实现运行的接口。示例如下。
<强>方法1:继承线程类强>
创建方法示例:
公共类MyThread1扩展线程{ @Override 公共空间run () {//TODO自动生成方法存根 super.run (); system . out。println(“执行线程:MyThread1”); } }
<强>方法2:实现运行的接口强>
创建方法示例:
公共类MyRunnable1实现Runnable { @Override 公共空间run () {//TODO自动生成方法存根 system . out。println(“执行线程:MyRunnable1”); } }
运行线程
针对上述两种方法,调用线程开始运行的方法分别如下。
方式示例1:新MyThread1 () .start ();
方法示例2:新线程(新MyRunnable1 ()) .start ();
<强>停止线程强>
请不要采取已经过时(弃用)的java.lang.Thread。站方法,不论你因为何种原因需要暂停或完全结束当前正在运行的线程。
<强>常见的退出线程的方法如下。强>
方式1:线程自动退出
线程执行完毕,自动退出。例如网络下载线程,当后台下载完后,线程自动退出。
方法2:使用中断主动退出
在主线程中,调用线程对象的中断()方法,设置线程状态。
最后一个线程t=新MyThread2 (); t.start (); 尝试{ thread . sleep (500); }捕捉(InterruptedException e) { e.printStackTrace (); } t.interrupt ();>之前在子线程中,调用isInterrupted()方法判断线程状态。如果返回真,则可以结束线程运行。如下示例代码,在线程中有一个虽然循环,每次循环都会判断线程状态,如果为真,则停止循环,退出线程。
公共类MyThread2扩展线程{ @Override 公共空间run () { super.run (); 而(真){//取消线程时调用中断()方法 如果(Thread.currentThread () .isInterrupted ()) { 打破; } } } }在主线程中调用中断设置状态,在子线程中通过isInterrupted获取状态,是最好的结束线程的方法。注意主线程中一旦调用中断,子线程中相关的睡眠,等待方法在执行时会抛出InterruptedException异常,此时也可以通过捕获这种异常来结束线程。
<强>方式3:使用预设标志主动退出强>
预设一个退出标志,通过判断标志的值结束线程运行。这种情况常见于循环执行中的任务。在每次循环时,判断标志值。如下示例,在线程而循环中判断mCancelFlag标志。
公共类MyThread3扩展线程{ 私人布尔mCancelFlag; @Override 公共空间run () { super.run (); system . out。println(“线程启动”); 而(mCancelFlag) {//取消线程时调用中断()方法 打破; } system . out。println(“线程”); } 公共空间cancelThread () { mCancelFlag=true; } }当主线程希望主动结束线程时,调用线程的cancelThread方法设置mCancelFlag即可。
最后MyThread3 t=新MyThread3 (); t.start (); 尝试{ thread . sleep (500); }捕捉(InterruptedException e) { e.printStackTrace (); }//停止线程 t.cancelThread ();>之前如果在线程执行时,需要主动退出线程,最佳的方式为方法2。用户根据实际情况,例如更多的状态控制,也可以使用方法3。
<强>一句话总结强>
创建线程:继承线程类或实现运行的接口。
结束线程:调用中断方法。
以上就是本文关于Java创建与结束线程代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解,Java编程之多线程死锁与线程间通信简单实现代码,Java编程利用套接字多线程访问服务器文件代码示例等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
Java创建与结束线程代码示例