关于java线程锁的有关问题
关于java线程锁的问题。
private static Object lock = new Object();
...
public void run(){
while(true){
synchronized(lock){
List<myObject> datas = dao.getDatas();
for(myObject data : datas){
myThread thread = new myThread();
thread.start();
}
}
}
}
public class myThread extends Thread{
public void run(){
synchronized(xxx){
//do something
}
}
}
在XXX处,应该怎么写,才能让线程针对每个myObject对象获取锁。
比如说List<myObject> datas = dao.getDatas()从数据库中获取到2个对象,
data1,data2,可以有两个线程运行 do something 代码块。
当有新的线程时,判断要针对哪个对象,并判断是否有针对该对象的线程正在运行。
如果有则等待,否则继续。
------解决方案--------------------
那就先谢谢夸奖啦
private static Object lock = new Object();
...
public void run(){
while(true){
synchronized(lock){
List<myObject> datas = dao.getDatas();
for(myObject data : datas){
myThread thread = new myThread();
thread.start();
}
}
}
}
public class myThread extends Thread{
public void run(){
synchronized(xxx){
//do something
}
}
}
在XXX处,应该怎么写,才能让线程针对每个myObject对象获取锁。
比如说List<myObject> datas = dao.getDatas()从数据库中获取到2个对象,
data1,data2,可以有两个线程运行 do something 代码块。
当有新的线程时,判断要针对哪个对象,并判断是否有针对该对象的线程正在运行。
如果有则等待,否则继续。
------解决方案--------------------