java小白的進階之路——線程實例(賣票)

編程語言 Java CPU 技術 擁慌洛 2017-03-31

java小白的進階之路——線程實例(賣票)

圖片來自互聯網

先熟悉一下一些概念:

  • 多線程:指的是程序(一個進程)運行時產生了不止一個線程

  • 並行與併發:

  • 並行:多個cpu實例或者多臺機器同時執行一段處理邏輯,是真正的同時。

  • 併發:通過cpu調度算法,讓用戶看上去同時執行,實際上從cpu操作層面不是真正的同時。併發往往在場景中有公用的資源,那麼針對這個公用的資源往往產生瓶頸,我們會用TPS或者QPS來反應這個系統的處理能力。

public class Ticket extends Thread {

private int num = 100;

public void run(){

while(true){

if(num>0){

System.out.println(Thread.currentThread().getName()+"------"+"sale---"+num--);

}

}

}

}

class TicketDemo{

public static void main(String[] args) {

Ticket t1 = new Ticket(); //票對象

Ticket t2 = new Ticket();

Ticket t3= new Ticket();

Ticket t4 = new Ticket();

t1.start();

t2.start();

t3.start();

t4.start();

}

}

它產生的結果是:

java小白的進階之路——線程實例(賣票)

這個時由代碼可知在實例化對象的時候由票對象他、t1、t2、t3、t4四個對象,這意味著每個對象就存在了100張票,不符合我們實際規則,我們的目的是模擬四個賣票窗口,在四個窗口賣同樣的票顯然是不行的。

*public class Ticket implements Runnable{

private int num = 100;

public void run(){

while(true){

if(num>0){

System.out.println(Thread.currentThread().getName()+"------"+"sale---"+num--);

}

}

}

}

class TicketDemo{

public static void main(String[] args) {

Ticket t = new Ticket();

//創建一個線程任務對象

Thread t1 = new Thread(t);

Thread t2 = new Thread(t);

Thread t3 = new Thread(t);

Thread t4 = new Thread(t);

t1.start();

t2.start();

t3.start();

t4.start();

}

}

*/

第二種方式通過實現Runnable接口來實現線程,然後就只需要實例化一個票對象,然後開四個窗口,也就是創建四個線程此時可以看到結果

java小白的進階之路——線程實例(賣票)

通過這樣一個簡單的實例來更好的理解線程的用法,有不對的地方還請多多指正,還是小白,請見諒!

相關推薦

推薦中...