java多线程小示例详解
2017-08-10 15:23
447 查看
package com.chillax.controller; import java.io.IOException; public class MultiThread { public static void main(String[] args) { System.out.println("我是main主线程!"); // 下面创建线程实例thread1 ThreadUseExtends thread1 = new ThreadUseExtends(); // 创建thread2时以实现了Runnable接口的THhreadUseRunnable类实例为参数 Thread thread2 = new Thread(new ThreadUseRunnable()); System.out.println("thread1主线程将挂起7秒!"); thread1.start();// 启动线程thread1使之处于就绪状态 try { // main主线程挂起7秒,而此时调用的子线程挂起10秒,同时一起执行, // 时间到达七秒后,主线程继续往下走 Thread.sleep(7000); } catch (InterruptedException e) { return; } System.out.println("又回到了main主线程!"); //走到这里判断thread1这子个线程还在存活没有,答案是存活的。 //原因是主线程休息7秒,子线程休息10秒,所以在此子线程还是执行的 if (thread1.isAlive()) {//如果此线程已经开始但尚未正常终止或中止 thread1.stop();// 如果thread1还存在则杀掉他 System.out.println("ThreadUseExtends休眠过长,主线程杀掉了ThreadUseExtends!"); } else //else没有大括号的情况下,如果判断符合条件进了if方法,那么else下的第一条语句是else大括号里的, //其余的都为else大括号外的 System.out.println("主线程没发现ThreadUseExtends,ThreadUseExtends已醒顺序执行结束了!"); thread2.start();//thread2就绪状态,随时可以调用, 把thread1。stop()后继续走 thread2.start() try { System.out.println("main主线程又将挂起7秒!"); Thread.sleep(7000);// 主线程挂起7秒 } catch (InterruptedException e) { return; } System.out.println("又回到了主线程!"); //由于 thread2子线程等待时间为1秒,而主线程等待时间为7秒,所以thread2没有在休眠 if (thread2.isAlive()) {//如果此线程已经开始但尚未正常终止或中止 thread2.stop();// 如果thread2还存在则杀掉他 System.out.println("ThreadUseRunnable休眠过长,主线程杀掉了ThreadUseRunnable!"); } else System.out.println("主线程没发现ThreadUseRunnable,ThreadUseRunnable已醒顺序执行结束了!"); System.out.println("程序结束按任意键继续!"); try { System.in.read(); } catch (IOException e) { System.out.println(e.toString()); } } }
第一个子线程继承thread
package com.chillax.controller; public class ThreadUseExtends extends Thread{ ThreadUseExtends(){} public void run(){ System.out.println("我是thread子类的线程实例!"); System.out.println("我将挂起10秒!"); System.out.println("回到主线程,请稍等,刚才主线程挂起可能还没醒过来!"); try { sleep(15000);//这边ThreadUseExtends线程休息10秒 } catch (InterruptedException e) { // TODO Auto-generated catch block return; } //如果该run()方法顺序执行完了,线程将自动结束,而不会被主线程杀掉 //但如果休眠时间过长,则线程还存活,可能被stop()杀掉 } }
第二个子线程实现Runnable
package com.chillax.controller; public class ThreadUseRunnable implements Runnable { ThreadUseRunnable() { }; @Override public void run() { System.out.println("我是ThreadUseRunnable类的线程实例并以实现了Runnable接口的类为参数!"); System.out.println("我将挂起1秒!"); System.out.println("回到主线程,请稍等,刚才主线程挂起可能还没醒过来!"); try { Thread.sleep(1000);//等待1秒,和主线程同时一起执行等待 } catch (InterruptedException e) { return; } } }
小示例完成,是不是感觉有多理解了呢!
相关文章推荐
- java 多线程-锁详解及示例代码
- java 多线程详解二 买票示例
- java高级进阶关于java多线程的应用 ThreadLocal多线程实例详解
- 什么是多线程中的竞争条件 - Java中的2个示例
- Java_集合体系之ArrayList详解、源码及示例
- java多线程之Semaphore信号量详解
- 10065---【Java多线程】线程池的工作原理详解(上)
- 黑马程序员---Java多线程的用法详解
- 正则表达式知识详解之基础知识 (java版示例)
- Java程序员必备知识-多线程框架Executor详解
- Java多线程之详解ThreadLocal类(一)
- java_集合体系之:LinkedList详解、源码及示例——04
- java多线程Thread-per-Message模式详解
- JAVA多线程编程详解-详细操作例子
- java多线程示例
- java多线程学习-java.util.concurrent详解(一) Latch/Barrier
- java 多线程(六) synchronized关键字详解
- 【JAVA秒会技术之多线程】多线程java.util.concurrent详解
- Java 多线程的详解
- Android多线程下载示例详解