使用spring定时启动一个job,然后会查询数据库,启动n个线程,每个线程需要执行一系列操作。例如:
我的一个线程 需要执行两个 synchronized方法(f1和f2),输出一些内容 ,然后结束。现在输出的内容无法按照f1 f2 的顺序输出,例如:f1-- f2-- f1-- f2--,但是实际上是乱的:f1-- f1-- f2-- f2-- 等等,反正就是乱的,至于怎么个乱法是不确定的。不知道我哪里出了问题?我使用的是synchronized method(){}这种方式来实现同步的。多线程Springsynchronized
我的一个线程 需要执行两个 synchronized方法(f1和f2),输出一些内容 ,然后结束。现在输出的内容无法按照f1 f2 的顺序输出,例如:f1-- f2-- f1-- f2--,但是实际上是乱的:f1-- f1-- f2-- f2-- 等等,反正就是乱的,至于怎么个乱法是不确定的。不知道我哪里出了问题?我使用的是synchronized method(){}这种方式来实现同步的。多线程Springsynchronized
你那是单线程程序才能这样吧!多线程你没办法让它们顺序执行的!怎么不懂我意思呢?现在都没法保证synchronized方法里面的操作是满足原子性的,也就是说那个synchronized方法里面两个操作中间夹杂着另外一个线程调用这个方法
你那是单线程程序才能这样吧!多线程你没办法让它们顺序执行的!怎么不懂我意思呢?现在都没法保证synchronized方法里面的操作是满足原子性的,也就是说那个synchronized方法里面两个操作中间夹杂着另外一个线程调用这个方法synchronized代表的是占用资源不共享,你看看方法里同步的哪一块,是不是方法的问题。比如2个人,A身上synchronized修饰了上衣和裤子,但是B却只是穿插的使用了A的鞋子。按你说的是synchronized修饰情况下却出现B使用A上衣的问题,这........再检查检查吧。
你那是单线程程序才能这样吧!多线程你没办法让它们顺序执行的!怎么不懂我意思呢?现在都没法保证synchronized方法里面的操作是满足原子性的,也就是说那个synchronized方法里面两个操作中间夹杂着另外一个线程调用这个方法synchronized代表的是占用资源不共享,你看看方法里同步的哪一块,是不是方法的问题。比如2个人,A身上synchronized修饰了上衣和裤子,但是B却只是穿插的使用了A的鞋子。按你说的是synchronized修饰情况下却出现B使用A上衣的问题,这........再检查检查吧。
我知道问题所在了,参见 http://blog.csdn.net/liumeiqqzj/article/details/7891395 ,不过我的需求里面需要传递参数给线程,因此单例还不怎么好搞,最后还是改成了synchronized代码块的方式来同步,每次new线程的时候传递参数+传递一个对象锁。
我已经发现这个问题了,不过我的需求里面需要传参,用起来比较麻烦;然后选择了synchronized (o){}这种方式
我已经发现这个问题了,不过我的需求里面需要传参,用起来比较麻烦;然后选择了synchronized (o){}这种方式synchronized static method(){}这种方式 传参会有问题?