一个简单的线程同步问题,这样写会不会死锁
代码如下:
public class Test {
private static Test instance = null;
private boolean stopFlag = false;
ArrayList users = new ArrayList();
Object syncObj = new Object();
public static Test getInstance()
{
if(instance == null)
instance = new Test();
return instance;
}
public Test()
{
InspetUser inspectUser = new InspetUser();
inspectUser.start();
}
public void add(Object data)
{
synchronized(syncObj)
{
//进行添加操作
}
}
public void remove(Object data)
{
synchronized(syncObj)
{
//进行移出操作
}
}
public int size()
{
synchronized(syncObj)
{
return users.size();
}
}
class InspetUser extends Thread
{
public void run()
{
long sleepTime = 5* 60 * 1000;
while(!stopFlag)
{
synchronized(syncObj)
{
Inspect();
}
try
{
sleep(sleepTime);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
private void Inspect()
{
//使用users(ArrayList)中的数据进行检测操作
}
}
}
以上代码主要是用来监测登陆的用户,并隔一段时间监测用户的访问情况(用线程InspetUser监测)
------解决方案--------------------不会
java要做出个死锁还真是不容易的事情呢
饿死倒是有可能
------解决方案--------------------不会
------解决方案--------------------不会的。。。