不考慮多服務(wù)器,限制線程池的大小和隊(duì)列的限制來實(shí)現(xiàn)。
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)、做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、石峰ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的石峰網(wǎng)站制作公司
代碼如下:
package?org.zhang;
import?java.util.concurrent.BlockingQueue;
import?java.util.concurrent.Executors;
import?java.util.concurrent.SynchronousQueue;
import?java.util.concurrent.ThreadPoolExecutor;
import?java.util.concurrent.TimeUnit;
/**
*?單服務(wù)器用線程池實(shí)現(xiàn)秒殺的思路一
*?
*?@author?zhanghaijun
*?
*/
public?class?ExecutorsTest?{
public?static?boolean?flag?=?true;?//?秒殺物品的標(biāo)記
public?static?void?main(String[]?args)?{
ThreadPoolExecutor?pool?=?new?ThreadPoolExecutor(1,?1,?0L,
TimeUnit.MILLISECONDS,?new?SynchronousQueueRunnable());
ThreadTest?t1?=?new?ThreadTest("張三");
ThreadTest?t2?=?new?ThreadTest("李四");
ThreadTest?t3?=?new?ThreadTest("王五");
try?{
pool.execute(t1);
}?catch?(Exception?e)?{
System.out.println(t1.getUserName()?+?"沒有搶到");
}
try?{
pool.execute(t3);
}?catch?(Exception?e)?{
System.out.println(t3.getUserName()?+?"沒有搶到");
}
try?{
pool.execute(t2);
}?catch?(Exception?e)?{
System.out.println(t2.getUserName()?+?"沒有搶到");
}
pool.shutdown();
}
}
class?ThreadTest?extends?Thread?{
private?String?userName;
public?ThreadTest(String?userName)?{
super();
this.userName?=?userName;
}
@Override
public?void?run()?{
try?{
Thread.sleep(200);
if?(ExecutorsTest.flag)?{
System.out.println(this.userName?+?"秒殺成功");
ExecutorsTest.flag?=?false;
}
}?catch?(InterruptedException?e)?{
e.printStackTrace();
}
}
public?String?getUserName()?{
return?userName;
}
public?void?setUserName(String?userName)?{
this.userName?=?userName;
}
}
用redis,比如秒殺一個(gè)商品,把該商品的信息放在redis中,主要是那個(gè)庫(kù)存量,搶購(gòu)的時(shí)候在redis中操作數(shù)據(jù)非???,每秒差不多8萬(wàn)次讀寫操作,這樣的并發(fā)量已經(jīng)夠用了
write后調(diào)用close來保存文件內(nèi)容,因?yàn)槭菍懙骄彌_區(qū),并沒真正寫入文件系統(tǒng)。
close后,需要重新打開文件,這次以r模式打開即可,調(diào)用readInt,就沒問題。
最好不要用java寫秒殺器,因?yàn)槟憔退阌?httpclient 拿到的也是未經(jīng)過渲染的html頁(yè)面,很多頁(yè)面js都沒有加載,你根本不知道渲染之后的頁(yè)面長(zhǎng)什么樣子,你最好學(xué)學(xué)木魚的火車票搶票助手,他用的是 firefox 的插件 scriptish 來寫搶票腳本,其實(shí)搶票跟秒殺是一個(gè)原理的,我第一個(gè)秒的程序就是照著他的程序改的,用這個(gè)上手也比較容易,但是要求你對(duì)javascript比較熟悉,不過比用java實(shí)現(xiàn)靠譜多了
當(dāng)前名稱:java秒殺代碼 java如何實(shí)現(xiàn)秒殺
文章起源:http://muchs.cn/article4/ddcchoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、動(dòng)態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、面包屑導(dǎo)航、標(biāo)簽優(yōu)化、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)