vector 和list同步机制到底是个什么意思? vector 和list同步机制到底是个什么意思? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在多线程的环境中,存在一个问题,就是多个线程同时访问一个资源(比如一个ArrayList),这会引起“共享冲突” 假设一个场景: 某线程往某元素特别多的ArrayList追加元素(add),此时ArrayList正好到了它数组的边界,那么它需要扩大数组,采用的方法你可以去看源代码,会有一个拷贝数组的操作。这个动作可能非常慢,那么它有可能正好执行到一半的时候,被JVM调度到休息状态。而此时如果正好又有一个线程来删除某元素(remove)。结果是2个线程对这个ArrayList的操作将使得它变得乱七八糟。 这就是“共享冲突”。 为了克服“共享冲突”,引入了“同步”机制,也就是“锁”机制,某线程要操作对象的时候,给它加把锁,告诉其他线程,“我正在动它,你们等着”。这样,即使它被调度到休息状态,也不会有其他线程来动这个对象,直到它解锁。 这就是“线程安全”。 如何将\u4e30类似的字符转换成中文 请各位帮忙写个用递归实现从x开始连续加到y为止的算法,谢谢!! 关于unicode编码问题 jsp问题 一个鼠标事件问题(corejava1的例子) 请问有张孝祥的java 就业培训光盘的!盘上的内容有几个小时? 构造器的修饰符可以是哪些?缺省是哪个? java中光标的显示 e.getKeyCode()在keyTyped事件和keyPressed事件中的区别 高手请进,在线等待. Private 变量/方法问题请教 很简单的问题,如何在java.math.BigInteger中设断点?
假设一个场景:
某线程往某元素特别多的ArrayList追加元素(add),此时ArrayList正好到了它数组的边界,那么它需要扩大数组,采用的方法你可以去看源代码,会有一个拷贝数组的操作。这个动作可能非常慢,那么它有可能正好执行到一半的时候,被JVM调度到休息状态。而此时如果正好又有一个线程来删除某元素(remove)。结果是2个线程对这个ArrayList的操作将使得它变得乱七八糟。
这就是“共享冲突”。
为了克服“共享冲突”,引入了“同步”机制,也就是“锁”机制,某线程要操作对象的时候,给它加把锁,告诉其他线程,“我正在动它,你们等着”。这样,即使它被调度到休息状态,也不会有其他线程来动这个对象,直到它解锁。
这就是“线程安全”。