當前位置:首頁 » 編程語言 » Java秒殺

Java秒殺

發布時間: 2023-02-13 21:22:40

java秒殺怎麼解決

具體的業務還是得需要你自己定製.\x0d你的需求實際上是一個變形的生產者-消費者實現.
對於此類需求,主要是將請求和實際的處理過程解耦,一般都是採取非同步的方式來通知請求方,
這跟用不用redis其實沒有多大的關系.一般的實現方法是你需要將用戶的請求封裝成一個Task,
然後將這個Task再push到redis隊列,然後後端的worker.php完全可以多進程、
多線程的並發處理Task並將處理結果回調給請求方.這里唯一麻煩點的就是這個Task的設計,
需要能夠包含請求信息(請求內容,請求方標識等等).

㈡ 用java如何實現秒殺流程啊

不考慮多伺服器,限制線程池的大小和隊列的限制來實現。

代碼如下:

packageorg.zhang;

importjava.util.concurrent.BlockingQueue;
importjava.util.concurrent.Executors;
importjava.util.concurrent.SynchronousQueue;
importjava.util.concurrent.ThreadPoolExecutor;
importjava.util.concurrent.TimeUnit;

/**
*單伺服器用線程池實現秒殺的思路一
*
*@authorzhanghaijun
*
*/
publicclassExecutorsTest{

publicstaticbooleanflag=true;//秒殺物品的標記

publicstaticvoidmain(String[]args){
ThreadPoolExecutorpool=newThreadPoolExecutor(1,1,0L,
TimeUnit.MILLISECONDS,newSynchronousQueue<Runnable>());
ThreadTestt1=newThreadTest("張三");
ThreadTestt2=newThreadTest("李四");
ThreadTestt3=newThreadTest("王五");
try{
pool.execute(t1);
}catch(Exceptione){
System.out.println(t1.getUserName()+"沒有搶到");
}

try{
pool.execute(t3);
}catch(Exceptione){
System.out.println(t3.getUserName()+"沒有搶到");
}

try{
pool.execute(t2);
}catch(Exceptione){
System.out.println(t2.getUserName()+"沒有搶到");
}
pool.shutdown();
}

}

classThreadTestextendsThread{

privateStringuserName;

publicThreadTest(StringuserName){
super();
this.userName=userName;
}

@Override
publicvoidrun(){
try{
Thread.sleep(200);
if(ExecutorsTest.flag){
System.out.println(this.userName+"秒殺成功");
ExecutorsTest.flag=false;
}

}catch(InterruptedExceptione){
e.printStackTrace();
}
}

publicStringgetUserName(){
returnuserName;
}

publicvoidsetUserName(StringuserName){
this.userName=userName;
}

}

㈢ java 秒殺為什麼會出現超買

因為 產生了線程安全問題

㈣ 用JAVA怎麼寫一個秒殺器。求具體代碼

最好不要用java寫秒殺器,因為你就算用 httpclient 拿到的也是未經過渲染的html頁面,很多頁面js都沒有載入,你根本不知道渲染之後的頁面長什麼樣子,你最好學學木魚的火車票搶票助手,他用的是 firefox 的插件 scriptish 來寫搶票腳本,其實搶票跟秒殺是一個原理的,我第一個秒的程序就是照著他的程序改的,用這個上手也比較容易,但是要求你對javascript比較熟悉,不過比用java實現靠譜多了

㈤ java秒殺並發怎麼處理

用redis,比如秒殺一個商品,把該商品的信息放在redis中,主要是那個庫存量,搶購的時候在redis中操作數據非常快,每秒差不多8萬次讀寫操作,這樣的並發量已經夠用了

㈥ java商品搶購秒殺應該怎麼實現

別去騙人的

㈦ Java如何解決超賣

一、人數閥門設計:進行用戶人群過濾。
商品數量只有100份,秒殺人數有10000人,那麼我們就設計1道閥門(根據情況,可以設計3道或者2道都可以的)。
在整點的時候,我們對點擊了「購買」按鈕後,我們只運行500人進入信息填寫頁面,信息填寫完成後提交訂單。效果如下:
①商品詳情點擊購買(秒殺)--》②輸入信息提交訂單--》③進行支付
10000人 500人 (這里也可以設計閥門,只允許多少人進入支付)
其他未進入的如何處理乃?顯示已搶完或者排隊等待(這就是後面要提到的排隊系統設計)。

二、會員排隊設計:對用戶進行排隊,排在前面的先購買
這相當於是消息隊列模式了,如果秒殺是立即知道結果,排隊可能會有點雞肋。
在第二步②輸入信息提交訂單後進行排隊,排在前面的先購買,排在後面的後購買

三、問答問題設計:過濾掉一些反應慢的用戶
在第一步①點擊購買後跳轉到問題頁面,用戶必須回答正確問題後,方可進入後面的流程

四、庫存緩存設計:緩存庫存,判斷用戶購買的商品是否還有,不讀取資料庫,速度快,也不會增加資料庫負擔,
經過前面的過濾,超賣的可能性比較低了提前將商品庫存緩存起來,到下單購買的時候,用戶購買了就減1,每次都通過庫存緩存判斷一下,如果為0就顯示已搶完。

五、頁面靜態設計:盡量靜態緩存化【CDN那些這里不做考慮】
第一步①商品詳情頁面,盡量進行緩存,減輕大批量用戶在訪問商品頁面的時候,大量查詢資料庫。
問答問題頁面:全靜態,載入快,無資料庫負擔。
排隊等待頁面:全靜態,載入快,無資料庫負擔。
排隊結束頁面:全靜態,載入快,無資料庫負擔。

㈧ 開學大三,准備做Java開發,簡歷里放跟著視頻做的秒殺系統很low嗎

應屆的應聘,其實看的不是你練了哪些。面試主要考察點有:1、你的基礎掌握的怎麼樣;2、你的學習能力怎麼樣;3、你的工作態度怎麼樣;最後,就是面試公司所使用的技術你會不會,如果不會,就回到問題2,就得看面試官對你學習能力的評估怎麼樣了。

㈨ 《轉》我要回家!教你如何秒殺12306,JAVA程序搶票成功!

加個許可權是對的,另外需要搶票的明天早上就趕緊搶吧 估計軟體馬上要傳遍微博了

㈩ java中秒殺使用的隊列

首先說 隊列這種數據結構你應該了解吧 。
可以用JDK自帶的 或者自己實現的也行,你問的如何實現隊列是指的隊列這中數據結構? 如果是 ,那你還是自己看數據結構那本書,原理都一樣 跟語言無關, 你可用JDK自帶的幾種隊列 查看JDKAPI文檔 實現了Queue介面的各種隊列基本都有,比如 線程安全的 ConcurrentLinkedQueue 這個是一個無界的線程安全的隊列 或者 ArrayBlockingQueue 這個隊列實現是一個有界阻塞隊列 都能夠實現你說的 或者 你用非線程安全的也成 只不過你自己控制線程的安全性就好了;.

熱點內容
java刪除數組元素 發布:2024-11-08 20:39:48 瀏覽:947
網狐6603編譯 發布:2024-11-08 20:38:20 瀏覽:472
編程老頑童 發布:2024-11-08 20:37:43 瀏覽:58
手機上能搭建ftp伺服器嗎 發布:2024-11-08 20:33:30 瀏覽:205
linux抓包工具 發布:2024-11-08 20:25:07 瀏覽:459
我的世界神奇寶貝伺服器聯機生存 發布:2024-11-08 20:17:07 瀏覽:723
溫州少兒編程 發布:2024-11-08 20:16:28 瀏覽:550
伺服器硬體有什麼 發布:2024-11-08 20:13:52 瀏覽:320
windows存儲分層 發布:2024-11-08 20:04:34 瀏覽:754
淘寶客服電腦伺服器 發布:2024-11-08 19:39:26 瀏覽:911