1. 程式人生 > >在java中兩個執行緒同時執行是怎麼變化的

在java中兩個執行緒同時執行是怎麼變化的

線上程執行中,兩個執行緒同時執行的情況是很平常的,下面我用一個案例來說明一下兩個執行緒同時執行時,執行緒狀態的變化情況:

程式碼如下:

/*
 * 功能:兩個執行緒同時執行是如何變化的
 * 作者: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;
}
}

}
}

執行結果:(可以看出兩個程序同時執行,輸出的結果並不是按照某個固定的順序進行的,是隨機產生的,無規律可言)