当前位置: 技术问答>java相关
关于线程同步的问题
来源: 互联网 发布时间:2015-08-28
本文导语: Hashtable的对象, 1 一个线程可能需要读出Hashtable的对象中保存的一个对象,并使用(不修改该对象) 一个线程可能会删去Hashtable的对象中的一个键/值对 请问这两个线程需要对Hashtable的对象进行同步吗?如果不使用...
Hashtable的对象,
1
一个线程可能需要读出Hashtable的对象中保存的一个对象,并使用(不修改该对象)
一个线程可能会删去Hashtable的对象中的一个键/值对
请问这两个线程需要对Hashtable的对象进行同步吗?如果不使用同步,会出现什么情况?
2
一个线程可能需要循环一遍使用Hashtable的对象中保存的对象(不修改对象)
一个线程可能会删去Hashtable的对象中的一个键/值对
请问这两个线程需要对Hashtable的对象进行同步吗?如果不使用同步,会出现什么情况?
十分感谢!
1
一个线程可能需要读出Hashtable的对象中保存的一个对象,并使用(不修改该对象)
一个线程可能会删去Hashtable的对象中的一个键/值对
请问这两个线程需要对Hashtable的对象进行同步吗?如果不使用同步,会出现什么情况?
2
一个线程可能需要循环一遍使用Hashtable的对象中保存的对象(不修改对象)
一个线程可能会删去Hashtable的对象中的一个键/值对
请问这两个线程需要对Hashtable的对象进行同步吗?如果不使用同步,会出现什么情况?
十分感谢!
|
呵呵, 我不知道从哪撇过一眼, 说 Hashtable 的确是在内部做了同步。
不过, 我们现在应该撇开是否 java 的 Hashtable 类是在内部做了同步,就假设他不是内部同步的,我仍然坚持原来的观点,不需要在外边做同步。
如果你只有一个线程在删除或修改,没有同步的必要。
to netstarry:
不知道你说的“危险”是什么?
我是理解成,一个线程删除对象后,对象不存在,另一个线程再访问就会访问错误。如果是这个,我认为不会有危险,除非是 C++. 在 JAVA 里,只要有线程在使用对象,或说引用着某个对象, 那个对象就不会被删除。
不过, 我们现在应该撇开是否 java 的 Hashtable 类是在内部做了同步,就假设他不是内部同步的,我仍然坚持原来的观点,不需要在外边做同步。
如果你只有一个线程在删除或修改,没有同步的必要。
to netstarry:
不知道你说的“危险”是什么?
我是理解成,一个线程删除对象后,对象不存在,另一个线程再访问就会访问错误。如果是这个,我认为不会有危险,除非是 C++. 在 JAVA 里,只要有线程在使用对象,或说引用着某个对象, 那个对象就不会被删除。
|
不需要同步, 如果只是一个线程读, 一个线程写, 我不认为需要任何同步, 只要只有一个线程写或说修改,就不会出现数据被破坏的情况
|
看jdk1.3的 new feature
|
你看看hashtable就知道了,它的方法本来就是同步的,当然在多线程中也一定是原操作了。
|
感觉应该同步,要不读的进程刚找到key,这是时间片结束,另一个进程正好删除这个key,下一次读进程就会出错
|
我觉得这两个是一回事。应该同步。
|
从你的描述来看,是不需要同步的,因为Hashtable已经是线程安全的了。
|
Hashtable现成安全
|
同步后,同步的方法在同一时间内只能有一个现成调用
|
我同意楼上的意见,你可以查一下hashtable是不是线程安全的。