在java中两个线程同时运行是怎么变化的
2017-10-25 19:45
423 查看
在线程运行中,两个线程同时运行的情况是很平常的,下面我用一个案例来说明一下两个线程同时运行时,线程状态的变化情况:
代码如下:
运行结果:(可以看出两个进程同时运行,输出的结果并不是按照某个固定的顺序进行的,是随机产生的,无规律可言)
代码如下:
/* * 功能:两个线程同时运行是如何变化的 * 作者:zyj0813 * 案例:编写一个程序,该程序可以接受一个整数n,创建两个线程, * 一个线程计算从1+....+n并输出结果, * 另一个线程每隔一秒在控制台输出“我是一个线程,正在输出第i个hello world”。 */ package com.test2; public class Demo2_5 { public static void main(String[] args) { Bird bird=new Bird(10); Pig pig=new Pig(10); //启动线程 Thread t1=new Thread(bird); Thread t2=new Thread(pig); t1.start(); t2.start(); } } //创建一个猪类来打印 class Pig implements Runnable { int times=0; int n=0; public Pig(int n) { this.n=n; } public void run() { while(true) { try { //时间延迟一秒 Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } times++; System.out.println("我是一个线程,正在输出第"+times+"个 hello world!!!"); if(times==n) { break; } } } } //创建一个鸟类,来数数 class Bird implements Runnable { int times=0; int res=0; int n=0; public Bird(int n) { this.n=n; } public void run() { while(true) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } res+=(++times); System.out.println("第"+times+"次计算结果:"+res); if(times==n) { System.out.println("最终结果:"+res); break; } } } }
运行结果:(可以看出两个进程同时运行,输出的结果并不是按照某个固定的顺序进行的,是随机产生的,无规律可言)
相关文章推荐
- 如何让两个线程同时运行
- 懒汉式的安全优化方式,两种方式。线程同时运行的时候,不会创建两个对象
- Java 创建两个线程,和主线程交替运行。
- 两个线程同时运行案例
- 两个线程同时运行案例
- JAVA多线程之两个线程同时写一个文件
- 两个线程同时运行的案例
- Java 并发编程中的 CountDownLatch 锁用于多个线程同时开始运行或主线程等待子线程结束
- Java#同时运行多个线程
- JAVA基础学习--一个线程加一运算,一个线程做减一运算,多个线程同时交替运行--synchronized
- Java多线程编程(一):创建并运行Java线程
- Java中的线程会按照优先级分配CPU时间片运行,那么线程什么时候放弃CPU使用权?
- java中两个一维数组怎么能合成一个二维数组!!!请大哥门指点!!!
- Java怎样中断一个运行中的线程(3)
- 怎么将java项目打包成双击就可以运行的jar包---fatjar
- Java异常与运行时异常,以及与线程的关系
- Java中创建线程的两个方法____解决火车票或售票问题
- java中,如何安全的结束一个正在运行的线程?
- 同时运行两个tomcat服务器的配置方…
- Java线程中断与终止线程运行