最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

多線程(多窗口賣(mài)票實(shí)例講解)

 更新時(shí)間:2017年08月07日 08:28:59   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇多線程(多窗口賣(mài)票實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

實(shí)現(xiàn)多線程的方式:

實(shí)現(xiàn)多線程的方式有多種,這里只列舉兩種常用的,而第一種繼承Thread的方式無(wú)法實(shí)現(xiàn)多窗口賣(mài)票。

一,繼承Thread方式:

特點(diǎn):多線程多實(shí)例,無(wú)法實(shí)現(xiàn)資源的共享。

例子:

package com.demo.study.multithreading;

public class MyThread extends Thread{

 private int i = 10;
 // 可以自行定義鎖,也可以使用實(shí)例的鎖
 Object mutex = new Object();
 public void selltickets(){
 
 synchronized (mutex) {
 
 if(i>0){
  i--;
  //getName()獲取線程的名字
  System.out.println(Thread.currentThread().getName()+" :"+ i);
 }
 }
 }
 
 @Override
 public void run() {
 while(i>0){
  
  selltickets();
 }
 }
}

啟動(dòng)線程:

package com.demo.study.multithreading;

public class Test {

 public static void main(String[] args) {
//繼承Thread方式:多線程多實(shí)例,無(wú)法實(shí)現(xiàn)資源的共享
 MyThread myThread1 = new MyThread();
 MyThread myThread2 = new MyThread();
 //給線程命名
 myThread1.setName("線程1");
 myThread2.setName("線程2");
 myThread1.start();
 myThread2.start();
 }
}

運(yùn)行結(jié)果:

二,實(shí)現(xiàn)Runnable方式:

特點(diǎn):多線程單實(shí)例,可實(shí)現(xiàn)資源的共享

例子:實(shí)現(xiàn)多窗口賣(mài)票:

package com.demo.study.multithreading;

public class MyThreadImpl implements Runnable {

 private int tickets = 10;

 public void sellTickets() {

 synchronized (MyThreadImpl.class) {
  if (tickets > 0) {

  tickets--;
  System.out.println(Thread.currentThread().getName() + "正在賣(mài)票,還剩下" + tickets + "張");
  }
 }
 }

 @Override
 public void run() {

 while (tickets > 0) {
  sellTickets();
  try {
  // 休眠一秒,讓執(zhí)行的效果更明顯
  Thread.sleep(100);
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
 }
 }
}

啟動(dòng)線程:

注意:Thread中的start()方法是線程的就緒,而線程的啟動(dòng),需要等待CPU的調(diào)度(也就是所謂的線程搶資源);run()方法的方法體代表了線程需要完成的任務(wù),稱之為線程執(zhí)行體。

void start() 使該線程開(kāi)始執(zhí)行;Java 虛擬機(jī)調(diào)用該線程的 run 方法。

package com.demo.study.multithreading;

public class Test {

 public static void main(String[] args) {

 //只創(chuàng)建一個(gè)實(shí)例
 MyThreadImpl threadImpl = new MyThreadImpl();
 //將上面創(chuàng)建的唯一實(shí)例放入多個(gè)線程中,Thread類提供了多個(gè)構(gòu)造方法,見(jiàn)下圖(構(gòu)造方法摘要)
 Thread thread1 = new Thread(threadImpl, "窗口1");
 Thread thread2 = new Thread(threadImpl, "窗口2");
 thread1.start();
 thread2.start();
 
 }
}

構(gòu)造方法摘要
Thread()
分配新的 Thread 對(duì)象。
Thread(Runnable target)
分配新的 Thread 對(duì)象。
Thread(Runnable target, String name)
分配新的 Thread 對(duì)象。
Thread(String name)
分配新的 Thread 對(duì)象。
Thread(ThreadGroup group, Runnable target)
分配新的 Thread 對(duì)象。
Thread(ThreadGroup group, Runnable target, String name)
分配新的 Thread 對(duì)象,以便將 target 作為其運(yùn)行對(duì)象,將指定的 name 作為其名稱,并作為 group 所引用的線程組的一員。
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
分配新的 Thread 對(duì)象,以便將 target 作為其運(yùn)行對(duì)象,將指定的 name 作為其名稱,作為 group 所引用的線程組的一員,并具有指定的堆棧大小。
Thread(ThreadGroup group, String name)
分配新的 Thread 對(duì)象。

運(yùn)行結(jié)果:

三、同步鎖與資源共享:

CPU可能隨機(jī)的在多個(gè)處于就緒狀態(tài)中的線程中進(jìn)行切換,這時(shí)就可能出現(xiàn)線程的安全問(wèn)題;線程安全問(wèn)題,其實(shí)是指多線程環(huán)境下對(duì)共享資源的訪問(wèn)可能會(huì)引起此共享資源的不一致性,而解決安全問(wèn)題則需要同步鎖的加入,執(zhí)行synchronized部分代碼的時(shí)候必須需要對(duì)象鎖,而一個(gè)對(duì)象只有一個(gè)鎖,只有執(zhí)行完synchronized里面的代碼后釋放鎖,其他線程才可以獲得鎖,那么就保證了同一時(shí)刻只有一個(gè)線程訪問(wèn)synchronized里面的代碼。實(shí)現(xiàn)資源共享的關(guān)鍵是,只有一個(gè)實(shí)例,synchronized使用的是同一把鎖,用實(shí)例的鎖或者定義一個(gè)實(shí)例。這就需要使用實(shí)現(xiàn)Runnable接口的方式,實(shí)現(xiàn)多線程,這樣傳入的是一個(gè)實(shí)例。繼承Thread的方式,傳入的是多個(gè)實(shí)例,每個(gè)實(shí)例都有一個(gè)鎖,那就無(wú)法實(shí)現(xiàn)控制。

以上這篇多線程(多窗口賣(mài)票實(shí)例講解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring實(shí)現(xiàn)文件上傳功能

    Spring實(shí)現(xiàn)文件上傳功能

    本篇文章主要介紹了Spring實(shí)現(xiàn)文件上傳功能,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Java通過(guò)值查找對(duì)應(yīng)的枚舉的實(shí)現(xiàn)

    Java通過(guò)值查找對(duì)應(yīng)的枚舉的實(shí)現(xiàn)

    本文主要介紹了Java通過(guò)值查找對(duì)應(yīng)的枚舉的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • Java利用Jackson輕松處理JSON序列化與反序列化

    Java利用Jackson輕松處理JSON序列化與反序列化

    Jackson?是?Java?中最流行的?JSON?處理庫(kù)之一,它提供了許多注解來(lái)簡(jiǎn)化?JSON?的序列化和反序列化過(guò)程。這篇文章將介紹一些?Jackson?常用的注解,以幫助您更輕松地處理?JSON?數(shù)據(jù)
    2023-05-05
  • struts+spring+hibernate三個(gè)框架的整合

    struts+spring+hibernate三個(gè)框架的整合

    這篇文章主要介紹了struts+spring+hibernate三個(gè)框架的整合,需要的朋友可以參考下
    2017-09-09
  • Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼

    Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單堆棧代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 很詳細(xì)的Log4j配置步驟

    很詳細(xì)的Log4j配置步驟

    Log4J的配置文件(Configuration File)就是用來(lái)設(shè)置記錄器的級(jí)別、存放器和布局的,它可接key=value格式的設(shè)置或xml格式的設(shè)置信息。通過(guò)配置,可以創(chuàng)建出Log4J的運(yùn)行環(huán)境。
    2008-11-11
  • Java中的JPA實(shí)體關(guān)系:JPA一對(duì)一,一對(duì)多(多對(duì)一),多對(duì)多

    Java中的JPA實(shí)體關(guān)系:JPA一對(duì)一,一對(duì)多(多對(duì)一),多對(duì)多

    Java Persistence API(JPA)是Java平臺(tái)上的一個(gè)對(duì)象關(guān)系映射(ORM)規(guī)范,用于簡(jiǎn)化數(shù)據(jù)庫(kù)操作,其中實(shí)體關(guān)系的映射是核心內(nèi)容之一,本文將深入淺出地探討JPA中的三種基本實(shí)體關(guān)系類型:一對(duì)一、一對(duì)多、多對(duì)多,揭示常見(jiàn)問(wèn)題、易錯(cuò)點(diǎn)及其避免策略,希望能幫助大家
    2024-06-06
  • 關(guān)于Intellij IDEA中的Version Control問(wèn)題

    關(guān)于Intellij IDEA中的Version Control問(wèn)題

    這篇文章主要介紹了Intellij IDEA中的Version Control問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 基于Java實(shí)現(xiàn)計(jì)數(shù)排序,桶排序和基數(shù)排序

    基于Java實(shí)現(xiàn)計(jì)數(shù)排序,桶排序和基數(shù)排序

    這篇文章主要為大家詳細(xì)介紹了計(jì)數(shù)排序,桶排序和基數(shù)排序的多種語(yǔ)言的實(shí)現(xiàn)(JavaScript、Python、Go語(yǔ)言、Java),感興趣的小伙伴可以了解一下
    2022-12-12
  • SpringCloud服務(wù)網(wǎng)關(guān)Gateway的使用教程詳解

    SpringCloud服務(wù)網(wǎng)關(guān)Gateway的使用教程詳解

    SpringCloud Gateway是Spring體系內(nèi)的一個(gè)全新項(xiàng)目,它旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的統(tǒng)一的API路由管理方式。本文就來(lái)為大家詳細(xì)講講Gateway的使用教程,需要的可以參考一下
    2022-09-09

最新評(píng)論

澜沧| 襄垣县| 桐柏县| 苗栗市| 汝南县| 寿光市| 方城县| 临沂市| 太谷县| 河源市| 肇州县| 阿图什市| 海淀区| 沙雅县| 泰顺县| 论坛| 九龙坡区| 玉山县| 鹤壁市| 龙游县| 新田县| 乌兰县| 鄂托克旗| 禄丰县| 且末县| 陵水| 大埔区| 彭阳县| 麟游县| 二手房| 吴堡县| 大荔县| 玉树县| 周至县| 仙桃市| 池州市| 沽源县| 台中市| 冷水江市| 建瓯市| 女性|