什么情况下出现死锁???(线程)
1,什么情况下出现死锁
2,以下代码 如何完善更好!
struct MyData
{
public string ip;
public string part;
public string time;
}
public void A()
{
Ds //数据源
foreach(DataRow dr in Ds.Tables[0].Rows)
{
MyData md = new MyData();
md.ip = dr["ip"].ToString();
md.part= dr["part"].ToString();
md.time= dr["time"].ToString();
ThreadPool.QueueUserWorkItem(new WaitCallback(JanitorMethod), md); //线程池
}
}
private Object lockObj = new Object();
private void JanitorMethod(object ob)
{
MyData de_All = (MyData)ob;
Thread.Sleep(Convert.ToInt32(de_All.time));
lock (lockObj)
{
try
{
SocketService ss = new SocketService(de_All.ip, de_All.part, false);
StringBuilder sb = new StringBuilder("12312313");
ss.Write_DoWork(sb.ToString()); // 执行函数不用理睬
}
catch (Exception err)
{
throw err;
}
}
}
2,以下代码 如何完善更好!
struct MyData
{
public string ip;
public string part;
public string time;
}
public void A()
{
Ds //数据源
foreach(DataRow dr in Ds.Tables[0].Rows)
{
MyData md = new MyData();
md.ip = dr["ip"].ToString();
md.part= dr["part"].ToString();
md.time= dr["time"].ToString();
ThreadPool.QueueUserWorkItem(new WaitCallback(JanitorMethod), md); //线程池
}
}
private Object lockObj = new Object();
private void JanitorMethod(object ob)
{
MyData de_All = (MyData)ob;
Thread.Sleep(Convert.ToInt32(de_All.time));
lock (lockObj)
{
try
{
SocketService ss = new SocketService(de_All.ip, de_All.part, false);
StringBuilder sb = new StringBuilder("12312313");
ss.Write_DoWork(sb.ToString()); // 执行函数不用理睬
}
catch (Exception err)
{
throw err;
}
}
}
...全文
相关推荐
多线程死锁的产生以及如何避免死锁方法(详解)
【多线程死锁的产生以及如何避免死锁方法详解】多线程死锁是并发编程中一个重要的问题,它发生在多个线程之间,当它们因竞争资源而陷入一种互相等待的状态,没有外部干预,都无法继续执行。
Java多线程之死锁的出现和解决方法
使用线程池:使用线程池可以避免死锁的出现,因为线程池可以控制线程的执行顺序。死锁是多线程编程中一个常见的问题,解决死锁需要我们了解死锁的出现原因和解决方法。
线程死锁的例子
死锁检测与恢复:通过算法检测出死锁状态,并采取措施(如回滚、撤销线程或强制唤醒一个线程)来打破死锁。了解线程死锁及其解决方案是每一位IT专业人员必备的知识。
JVM---jstack分析Java线程CPU占用,线程死锁的解决
### 分析线程死锁线程死锁是多线程编程中常见的问题,表现为两个或多个线程相互等待对方释放资源,导致都无法继续执行。分析线程死锁的步骤如下:1.
Java线程死锁实例及解决方法
new DeadLock(); td1.flag = 1; td2.flag = 0; new Thread(td1).start(); new Thread(td2).start(); }}四、避免死锁的方法在有些情况下



