我现在定义了一个方法 这个方法有2种重载方式
当程序运行后 我可能有最多可能同时10遍调用这个方法
现在目前情况就是 我只调用1次,没任何问题
如果同时调用10次,立刻没有响应。上课的时候我好像记得老师说过 在定义方法之前加一个词就可以达到一种效果
就算10次调用同时进行,它一个个运行,第一个运行完毕后再运行下一个慢点就慢点了 总比没有响应好不知道大家是否能看懂我的意思。。
希望能给与我帮助...
翻书翻了好久没找到 网上搜索也不知道该用什么关键字来找。。
谢谢各位。。
当程序运行后 我可能有最多可能同时10遍调用这个方法
现在目前情况就是 我只调用1次,没任何问题
如果同时调用10次,立刻没有响应。上课的时候我好像记得老师说过 在定义方法之前加一个词就可以达到一种效果
就算10次调用同时进行,它一个个运行,第一个运行完毕后再运行下一个慢点就慢点了 总比没有响应好不知道大家是否能看懂我的意思。。
希望能给与我帮助...
翻书翻了好久没找到 网上搜索也不知道该用什么关键字来找。。
谢谢各位。。
如果没有多线程的话,那是你程序逻辑的问题。仔细检查你的程序逻辑。
同步 synchronized
synchronized是一个锁
排斥的
synchronized不是什么问题都能解决的
说简单点,就是你的方法内部没有访问其他对象(所有的静态及非静态成员变量与成员方法);方法内用到的所有变量都真的是“局部”变量:在方法内部声明的变量。这样,你无论多少个线程来访问这个对象的这个方法,都100%没有问题。
再回来说楼主的问题:同时调用方法10次,就挂死了。感觉是死锁了,不是简单的一个synchronized就可以解决.就像楼上某位大虾说的,好好看看代码逻辑此外,加synchronized固然可以保护你的代码正确执行(但不会全部),但是就像卡巴杀毒一样,synchronized排他性太高,所有被sychronized圈起来的代码都不能并行执行,如此一来,实际上你的多线程已经没有多大意义了。
那就是你没有加锁啊
那怎么可能死锁呢?
除非你的对象的内部是有锁的机制
这个加了synchronized 也没有用吧
死锁是有synchronized 的时候等待锁的时候造成的
不知道你的程序时怎么回事
我是这么个情况
用到了线程
我一个类b继承JLabel 用了runable接口
然后创建了10个类b 同时start() 以达到一10个数字滚动的效果
到这里都没问题
问题出在停止滚动之后
在停止滚动之后 我要把这10个JLabel的text朝库里存入
存入的方法我也是写在类b里的
一写入就没有响应
然后去看数据库,有时一个也写不进,有时能写进去几个......谢谢各位。。实在不好意思。。昨天真的一忙就忘了。。
10个b类 一起 start() 然后一起stop()
然后从b1到b10同时调用它的存库的方法.....
应该就是这里有问题...
线程不太懂。