欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

網(wǎng)上售票系統(tǒng)java代碼,客車售票系統(tǒng)java源碼

用java語言編寫一個火車站售票系統(tǒng),要求如下

這個不難,我正好有個類似的模板,稍微修改下文字,調整下就可以用了。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站制作、成都網(wǎng)站設計、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務陽江,10年網(wǎng)站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

java售票系統(tǒng)怎么做到同步的

//票這個類中的售票方法加鎖synchronized

public class Tickets implements Runnable {

int ticket=4;

public void run() {

sellticket();

}

public synchronized void sellticket(){

int ticket=this.ticket;

if(ticket0){

System.out.println("顧客到達"+Thread.currentThread().getName()+"站臺");

System.out.println("售票臺"+ticket+"票,處理5秒");

try{

for(int i=0;i5;i++){

Thread.sleep(200);

System.out.print(i+"分鐘");

}

System.out.println("賣出第"+ticket);

System.out.println("----------------");

--ticket;

}catch(InterruptedException e){

System.err.println("買票不成功");

System.exit(1);

}

}

}

}

//測試類

public class SellTicket {

public static void main(String args[]){

Tickets t=new Tickets();

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();

}

}

JAVA航空訂票系統(tǒng) 急求!!作業(yè)!!

你這給100分都不見的有人給你做了。。。除非有人正好有一樣的。。。

Java中Runnable和Thread的區(qū)別

nable和thread的區(qū)別(多線程必須用Runable)

Java中有兩種實現(xiàn)多線程的方式以及兩種方式之間的區(qū)別

看到一個面試題.問兩種實現(xiàn)多線程的方法.沒事去網(wǎng)上找了找答案.

網(wǎng)上流傳很廣的是一個網(wǎng)上售票系統(tǒng)講解.轉發(fā)過來.已經不知道原文到底是出自哪里了.

Java中有兩種實現(xiàn)多線程的方式。一是直接繼承Thread類,二是實現(xiàn)Runnable接口。那么這兩種實現(xiàn)多線程的方式在應用上有什么區(qū)別呢?

為了回答這個問題,我們可以通過編寫一段代碼來進行分析。我們用代碼來模擬鐵路售票系統(tǒng),實現(xiàn)通過四個售票點發(fā)售某日某次列車的100張車票,一個售票點用一個線程表示。

首先這樣編寫這個程序:

Java代碼

class ThreadTest extends Thread{

private int ticket = 100;

public void run(){

while(true){

if(ticket 0){

System.out.println(Thread.currentThread().getName() +

"is saling ticket" + ticket--);

}else{

break;

}

}

}

}

源碼打印?

class ThreadTest extends Thread{

private int ticket = 100;

public void run(){

while(true){

if(ticket 0){

System.out.println(Thread.currentThread().getName() +

"is saling ticket" + ticket--);

}else{

break;

}

}

}

}

main測試類:

Java代碼

public class ThreadDome1{

public static void main(String[] args){

ThreadTest t = new ThreadTest();

t.start();

t.start();

t.start();

t.start();

}

}

源碼打印?

public class ThreadDome1{

public static void main(String[] args){

ThreadTest t = new ThreadTest();

t.start();

t.start();

t.start();

t.start();

}

}

上面的代碼中,我們用ThreadTest類模擬售票處的售票過程,run方法中的每一次循環(huán)都將總票數(shù)減1,模擬賣出一張車票,同時該車票號打印出來,直接剩余的票數(shù)到零為止。在ThreadDemo1類的main方法中,我們創(chuàng)建了一個線程對象,并重復啟動四次,希望通過這種方式產生四個線程。從運行的結果來看我們發(fā)現(xiàn)其實只有一個線程在運行,這個結果 告訴我們:一個線程對象只能啟動一個線程,無論你調用多少遍start()方法,結果只有一個線程。

我們接著修改ThreadDemo1,在main方法中創(chuàng)建四個Thread對象:

Java代碼

public class ThreadDemo1{

public static void main(String[] args){

new ThreadTest().start();

new ThreadTest().start();

new ThreadTest().start();

new ThreadTest().start();

}

}

源碼打印?

public class ThreadDemo1{

public static void main(String[] args){

new ThreadTest().start();

new ThreadTest().start();

new ThreadTest().start();

new ThreadTest().start();

}

}

Java代碼

class ThreadTest extends Thread{

private int ticket = 100;

public void run(){

while(true){

if(ticket 0){

System.out.println(Thread.currentThread().getName() +

" is saling ticket" + ticket--);

}else{

break;

}

}

}

}

源碼打印?

class ThreadTest extends Thread{

private int ticket = 100;

public void run(){

while(true){

if(ticket 0){

System.out.println(Thread.currentThread().getName() +

" is saling ticket" + ticket--);

}else{

break;

}

}

}

}

這下達到目的了嗎?

從結果上看每個票號都被打印了四次,即 四個線程各自賣各自的100張票,而不去賣共同的100張票。這種情況是怎么造成的呢?我們需要的是,多個線程去處理同一個資源,一個資源只能對應一個對象,在上面的程序中,我們創(chuàng)建了四個ThreadTest對象,就等于創(chuàng)建了四個資源,每個資源都有100張票,每個線程都在獨自處理各自的資源。

經過這些實驗和分析,可以總結出,要實現(xiàn)這個鐵路售票程序,我們只能創(chuàng)建一個資源對象,但要創(chuàng)建多個線程去處理同一個資源對象,并且每個線程上所運行的是相同的程序代碼。在回顧一下使用接口編寫多線程的過程。

Java代碼

public class ThreadDemo1{

public static void main(String[] args){

ThreadTest t = new ThreadTest();

new Thread(t).start();

new Thread(t).start();

new Thread(t).start();

new Thread(t).start();

}

}

源碼打印?

public class ThreadDemo1{

public static void main(String[] args){

ThreadTest t = new ThreadTest();

new Thread(t).start();

new Thread(t).start();

new Thread(t).start();

new Thread(t).start();

}

}

Java代碼

class ThreadTest implements Runnable{

private int tickets = 100;

public void run(){

while(true){

if(tickets 0){

System.out.println(Thread.currentThread().getName() +

" is saling ticket " + tickets--);

}

}

}

}

源碼打印?

class ThreadTest implements Runnable{

private int tickets = 100;

public void run(){

while(true){

if(tickets 0){

System.out.println(Thread.currentThread().getName() +

" is saling ticket " + tickets--);

}

}

}

}

上面的程序中,創(chuàng)建了四個線程, 每個線程調用的是同一個ThreadTest對象中的run()方法,訪問的是同一個對象中的變量(tickets)的實例,這個程序滿足了我們的需求。在Windows上可以啟動多個記事本程序一樣,也就是多個進程使用同一個記事本程序代碼。

可見, 實現(xiàn)Runnable接口相對于繼承Thread類來說,有如下顯著的好處:

(1)適合多個相同程序代碼的線程去處理同一資源的情況,把虛擬CPU(線程)同程序的代碼,數(shù)據(jù)有效的分離,較好地體現(xiàn)了面向對象的設計思想。

(2)可以避免由于Java的單繼承特性帶來的局限。我們經常碰到這樣一種情況,即當我們要將已經繼承了某一個類的子類放入多線程中,由于一個類不能同時有兩個父類,所以不能用繼承Thread類的方式,那么,這個類就只能采用實現(xiàn)Runnable接口的方式了。

(3)有利于程序的健壯性,代碼能夠被多個線程共享,代碼與數(shù)據(jù)是獨立的。當多個線程的執(zhí)行代碼來自同一個類的實例時,即稱它們共享相同的代碼。多個線程操作相同的數(shù)據(jù),與它們的代碼無關。當共享訪問相同的對象是,即它們共享相同的數(shù)據(jù)。當線程被構造時,需要的代碼和數(shù)據(jù)通過一個對象作為構造函數(shù)實參傳遞進去,這個對象就是一個實現(xiàn)了Runnable接口的類的實例。 Java中Runnable和Thread的區(qū)別更詳細的資料參考:

java編寫火車售票系統(tǒng)

你說的這個程序應該是不難的,只不過N久沒有寫過javaswing 了

還有就是java沒有多繼承的,只有多實現(xiàn)接口的

繼承的關鍵字是:extends

接口的關鍵字是:interface

用java模擬四個售票點,不重復的賣出100張票(票的編號為1--100),售完為止。

public?class?ShowDemo{

public?static?void?main(String[]?rags)throws?Exception{

MyThread?mt=?new?MyThread();

Thread?th1?=?new?Thread(mt,"售票一");

Thread?th2?=?new?Thread(mt,"售票二");

Thread?th3?=?new?Thread(mt,"售票三");

Thread?th4?=?new?Thread(mt,"售票四");

th1.start();th2.start();th3.start();th4.start();

}

}

class?MyThread?implements?Runnable{

int?ticket=1;

public?void?run(){

while(ticket=100){

if("售票一".equals(Thread.currentThread().getName())??ticket%2!=0){

System.out.println("售票一售出:"+ticket++);

}

if("售票二".equals(Thread.currentThread().getName())??ticket%2!=0){

System.out.println("售票二售出:"+ticket++);

}

if("售票三".equals(Thread.currentThread().getName())??ticket%2==0){

System.out.println("售票三售出:"+ticket++);

}

if("售票四".equals(Thread.currentThread().getName())??ticket%4==0){

System.out.println("售票四售出:"+ticket++);

}

}

}

}

分享文章:網(wǎng)上售票系統(tǒng)java代碼,客車售票系統(tǒng)java源碼
本文來源:http://chinadenli.net/article43/dsisses.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿網(wǎng)站建設響應式網(wǎng)站商城網(wǎng)站自適應網(wǎng)站建站公司企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站建設