单服务器防止生成重复订单的方法

418 查看

涉及到取餐号的问题,每个商家都有相对应的取餐号,这时候很难用 blockqueue来实现,想了很多办法,首先做测试,生成一堆订单。,然后批量改变订单状态。

class ThreadTest implements Runnable{

private String testString;
public ThreadTest(String test){
testString = test;
}

/**
* 重写(Override)run()方法 JVM会自动调用该方法
*/
public void run() {
String token = "token=18f78d796311bd38&";
String uri="http://localhost:8080/noodle/payOrderStatus.json?"+token+"orderid="+testString+"&orderstatus=1";
try{
HttpClient httpClient=new DefaultHttpClient();

HttpGet httpGet = new HttpGet(uri);
HttpResponse resp=httpClient.execute(httpGet);

if(resp.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
BufferedReader reader=new BufferedReader(
new InputStreamReader(resp.getEntity().getContent())
);
StringBuffer result=new StringBuffer();
String inputLine=null;
while((inputLine=reader.readLine())!=null){
result.append(inputLine);
}
System.out.println(result.toString());
ResultModel<List<OrderDetail>> test = JSON.parseObject(result.toString(),new TypeReference<ResultModel<List<OrderDetail>>>(){});
System.out.println(test.getCode());
OrderDetail orderDetail = test.getData().get(0);
System.out.println(orderDetail.getDishtype());
}

}catch(Exception e){
System.out.println(e.getMessage());
}
}
}

使用线程池来模拟
不用sychronized就会是有重复的数据产生,如果加上则不会产生重复数据,达到预期效果。