多线程调用并测试lock是否有效的有关问题
多线程调用并测试lock是否有效的问题
正在整合一个支付接口,有时对方会同时间发了两个异步通知过来,造成记录重复更新,对方说加个锁操作看看
所以写了上面的方法进行测试lock是否有效
1、上面的测试方法是否有效,c方法中有加lock和没加,在单个机子上不断刷新时,返回结果begin和end总是显示在一起的,并没有出现插队的现象,是因为同时刷新的人数不足?
2、在线支付返回页面中可以用这种方法加锁,防止出现多次更新的情况吗?
------解决思路----------------------
lockThis应该定义成static型,或者用全局变量,否则每个线程函数都实例化一个,锁定的是不同的对象
protected void Page_Load(object sender, EventArgs e)
{
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("1");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("2");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("3");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("4");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("5");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("6");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("7");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("8");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("9");
new System.Threading.Thread(new ParameterizedThreadStart(c)).Start("10");
Response.Write("</br>========================== end<hr/>");
}
private void c(object num)
{
System.Object lockThis = new System.Object();
lock (lockThis)
{
Response.Write("</br>thread " + num + " begin");
Response.Write("</br>thread " + num + " end<hr/>");
}
}
正在整合一个支付接口,有时对方会同时间发了两个异步通知过来,造成记录重复更新,对方说加个锁操作看看
所以写了上面的方法进行测试lock是否有效
1、上面的测试方法是否有效,c方法中有加lock和没加,在单个机子上不断刷新时,返回结果begin和end总是显示在一起的,并没有出现插队的现象,是因为同时刷新的人数不足?
2、在线支付返回页面中可以用这种方法加锁,防止出现多次更新的情况吗?
------解决思路----------------------
lockThis应该定义成static型,或者用全局变量,否则每个线程函数都实例化一个,锁定的是不同的对象