資源簡介
并發多數據與多核編程課程實踐作業:
1.1代碼清單:
(1).TicketingDS.java文件,TicketingDS類是實現并發數據結構的類。
1??方法:TicketingDS(int routenum, int coachnum, int seatnum, int stationnum, int threadnum),初始化方法,用來初始化并發數據結構和變量。
2??方法:public Ticket buyTicket(String passenger, int route, int departure, int arrival),購票方法,乘客passenger購買route車次從department站到arrival站的車票一張。若購票成功,返回有效的Ticket對象,即return ticket;若購票失敗,返回無效的Ticket對象,即return null。
3??方法: public int inquiry(int route, int departure, int arrival),查詢余票的方法,查詢route車次從department站到arrival站的余票數。
4??方法:public boolean refundTicket(Ticket ticket),退票方法,對有效的Ticket對象返回true,對無效的Ticket對象返回false。
(2).TicketingSystem.java文件,是一個接口類。
(3).Trace.java文件,主函數類,用來調用實現的各個方法。
(4).test.java文件,測試類,在各個threadnum和testnum情況下,計算吞吐量。
(5).Verify.java文件,快照類,顯示每一個車次所有座位的預定情況,給開發者以參考,驗證正確性。

代碼片段和文件信息
package?ticketingsystem;
import?java.util.ArrayList;
import?java.util.Random;
public?class?TdsThread?extends?Thread?{
private?TicketingDS?tds;
// private?int?interval;
// private?int?start;
private?int?testnum;
long?starttime;
long?endtime;
volatile?int?i;
// Time?time;
volatile?long?buytime;
volatile?long?inqtime;
volatile?long?reftime;
int?buycount;
int?inqcount;
int?refcount;
public?TdsThread(TicketingDS?tds?int?testnum)?{
this.tds?=?tds;
this.testnum?=?testnum;?//????????
}
// public?class?Time{
// ArrayList?time?=?new?ArrayList();
// public?void?time(long?i){};
// public?void?addTid(long?i){
// time.add(i);
// }
// public?void?removeTid(long?i){
// time.remove(i);
// }
// public?boolean?containsTid(long?i){
// return?time.contains(i);
// }
// }
public?void?run()?{
starttime=System.currentTimeMillis();
int?THREAD_EXE_NUM?=?this.testnum;
Random?rand?=?new?Random();
ArrayList?soldTicket?=?new?ArrayList();
Ticket?ticket?=?new?Ticket();
for?(?i?=?0;?i? //System.out.println(Thread.currentThread().getName()?+?“?“?+?i);
String?passenger?=?“cwg“+Thread.currentThread().getId()+i;
int?route?=?rand.nextInt(5)+1;
int?departure?=?rand.nextInt(9)+1;
int?arrival?=?rand.nextInt(10-departure)+1?+departure;
int?num?=?0;
int?departure2?=?rand.nextInt(9)+1;
int?arrival2?=?rand.nextInt(10-departure2)+1?+departure2;
boolean?refund?=?false;
Random?ra?=?new?Random();
int?t?=?ra.nextInt(THREAD_EXE_NUM)%10;
System.out.println(“t?is?“?+?t);
if(t==3|t==6|t==9){
long?buystarttime;
long?buyendtime;
buystarttime?=?System.currentTimeMillis();
System.out.println(“buy?route?is?“?+?route);
ticket?=?tds.buyTicket(passenger?route?departure?arrival);
System.out.println(“after?buy?route?is?“?+?route);
buyendtime?=?System.currentTimeMillis();
buytime=buytime+(buyendtime-buystarttime);
buycount?++;
if(ticket?!=?null)?{
//soldTicket.add(ticket);
continue;
}
// System.out.println(System.nanoTime()+“??????????“?+?ticket.tid?+?“????“+?ticket.passenger?+?
// “??????????“+ticket.route?+“??????“+ticket.coach+“??????“?+ticket.seat?+“???λ?????“?+?
// ticket.departure?+“???????“?+ticket.arrival?+?“?????????.“);
}
else?if(t==1?|?t==2?|?t==4|t==5|t==7|t==8){
long?inqstarttime;
long?inqendtime;
inqstarttime?=?System.currentTimeMillis();
System.out.println(“inquary?route?is?“?+?route);
num?=?tds.inquiry(route?departure2?arrival2);
inqendtime?=?System.currentTimeMillis();
inqtime=inqtime+(inqendtime-inqstarttime);
inqcount?++;
continue;
// System.out.println(?System.nanoTime()+“????????????“?+?route?+?“??????“?+?departure2?+?
// “???????“?+?arrival2?+?“?????????“?+?num?+“???.“);
}
else?if(t==0)?
//
if(ticket?!=?null)?{
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-12-18?11:27??ticketingsystem\
?????文件?????????470??2017-12-18?16:24??ticketingsystem\Test2.java
?????目錄???????????0??2018-09-21?22:25??__MACOSX\
?????目錄???????????0??2018-09-21?22:25??__MACOSX\ticketingsystem\
?????文件?????????188??2017-12-18?16:24??__MACOSX\ticketingsystem\._Test2.java
?????文件????????4332??2017-12-18?10:54??ticketingsystem\Test.java
?????文件?????????188??2017-12-18?10:54??__MACOSX\ticketingsystem\._Test.java
?????文件????????2721??2017-12-18?16:44??ticketingsystem\Test1.java
?????文件?????????188??2017-12-18?16:44??__MACOSX\ticketingsystem\._Test1.java
?????文件?????????343??2017-11-22?20:54??ticketingsystem\TicketingSystem.java
?????文件?????????188??2017-11-22?20:54??__MACOSX\ticketingsystem\._TicketingSystem.java
?????文件????????3901??2017-12-20?17:34??ticketingsystem\TdsThread.java
?????文件?????????188??2017-12-20?17:34??__MACOSX\ticketingsystem\._TdsThread.java
?????文件????????4561??2017-11-22?20:54??ticketingsystem\Trace.java
?????文件?????????188??2017-11-22?20:54??__MACOSX\ticketingsystem\._Trace.java
?????文件????????6199??2017-12-21?20:27??ticketingsystem\TicketingDS.java
?????文件?????????244??2017-12-21?20:27??__MACOSX\ticketingsystem\._TicketingDS.java
?????文件?????????188??2017-12-18?11:27??__MACOSX\._ticketingsystem
- 上一篇:Servlet外文翻譯
- 下一篇:Java記事本源碼和課程設計報告
評論
共有 條評論