V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  esolve  ›  全部回复第 16 页 / 共 18 页
回复总数  347
1 ... 8  9  10  11  12  13  14  15  16  17 ... 18  
2017-03-27 16:19:18 +08:00
回复了 esolve 创建的主题 问与答 concurrenthashmap 里 getFirst 函数里的一个问题
HashEntry<K,V> More ...getFirst(int hash) {
HashEntry<K,V>[] tab = table;
return tab[hash & (tab.length - 1)];
}
@h4x3rotab 照你这意思,用 hashmap 的时候,元素个数必须是 2 的 N 次方?
2017-03-27 13:00:03 +08:00
回复了 esolve 创建的主题 问与答 CopyOnWriterArrayList 和 fail-fast 有一点不理解的地方
@SoloCompany 譬如用 iterator 循环体里面读总会产生 ConcurrentModificationException 了吧
2017-03-27 12:41:41 +08:00
回复了 esolve 创建的主题 问与答 CopyOnWriterArrayList 和 fail-fast 有一点不理解的地方
@SoloCompany 譬如用 iterator 循环体里面读啊
或者 for(i) list(i).get 里读
2017-03-24 23:19:10 +08:00
回复了 esolve 创建的主题 问与答 关于 ArrayList 源码中的构造函数里 Arrays.copyOf 的问题
@wwqgtxx 没看懂,意思是 Arrays.copyOf(elementData, size, Object[].class)能强制的把 String 类型元素变成 Object 类型, 从而使得 elementData.getClass()== Object[].class ?
2017-03-23 16:44:49 +08:00
回复了 esolve 创建的主题 问与答 AWS 的 instance 用 ssh 登不上去怎么回事?
@chongdianbao 挂了代理也不能连啊
而且不挂代理也能 ping 通啊
难道封了 22 号端口?
2017-03-22 12:23:41 +08:00
回复了 esolve 创建的主题 问与答 Java 游戏服务器开发和其他行业的 Java 后端开发区别有多大?
@js1gsb 这意思,做过游戏服务器的话,去电商啥的做高并发,分布式也容易了?
2017-03-20 09:28:48 +08:00
回复了 esolve 创建的主题 问与答 问一个比较弱的问题,关于数据库索引
还有就是,在创建表的时候,设置为主键或者唯一性( unique )的列是不是自动就是索引?
还是需要运行 ALTER TABLE table_name ADD UNIQUE index_name ( column ) 后才能变成索引?
2017-03-02 00:02:26 +08:00
回复了 esolve 创建的主题 Java Java 虚假唤醒怎么网上都没有一个好的例子?
@rogerchen

这里有一个例子( http://blog.csdn.net/zhangheliang2010/article/details/44890103)

public class MyStack {
private List<String> list = new ArrayList<String>();

public synchronized void push(String value) {
synchronized (this) {
list.add(value);
notify();
}
}

public synchronized String pop() throws InterruptedException {
synchronized (this) {
if (list.size() <= 0) {
wait();
}
return list.remove(list.size() - 1);
}
}
}

问题: 这段代码大多数情况下运行正常,但是某些情况下会出问题。什么时候会出现什么问题?如何修正?

代码分析:

从整体上,在并发状态下, push 和 pop 都使用了 synchronized 的锁,来实现同步,同步的数据对象是基于 List 的数据;大部分情况下是可以正常工作的。

问题描述:

状况 1 :

1. 假设有三个线程: A,B,C. A 负责放入数据到 list,就是调用 push 操作, B,C 分别执行 Pop 操作,移除数据。

2. 首先 B 先执行,于 pop 中的 wait()方法处,进入 waiting 状态,进入等待队列,释放锁。

3. A 首先执行放入数据 push 操作到 List ,在调用 notify()之前; 同时 C 执行 pop(),由于 synchronized ,被阻塞,进入 Blocked 状态,放入基于锁的等待队列。注意,这里的队列和 2 中的 waiting 等待队列是两个不同的队列。

4. A 线程调用 notify(),唤醒等待中的线程 A 。

5. 如果此时, C 获取到基于对象的锁,则优先执行,执行 pop 方法,获取数据,从 list 移除一个元素。

6. 然后, A 获取到竞争锁, A 中调用 list.remove(list.size() - 1),则会报数据越界 exception 。

状况 2 :

1. 相同于状况 1

2. B 、 C 都处于等待 waiting 状态,释放锁。等待 notify()、 notifyAll()操作的唤醒。

3. 存在被虚假唤醒的可能。

何为虚假唤醒?

虚假唤醒就是一些 obj.wait()会在除了 obj.notify()和 obj.notifyAll()的其他情况被唤醒,而此时是不应该唤醒的。

------------------------------------------------------------

我的理解是, A 被 B 的 notify()唤醒了,但是条件变量不满足了,所以这个虚假指的是条件变量不满足所以虚假

但是原文中却说:“一些 obj.wait()会在除了 obj.notify()和 obj.notifyAll()的其他情况被唤醒”

着我就不懂了,明明 A 是被 B 的 notify()唤醒了啊,什么叫“除了 obj.notify()和 obj.notifyAll()的其他情况被唤醒”?
2017-03-01 23:49:50 +08:00
回复了 esolve 创建的主题 问与答 tomcat 是不是来一个 http request 就生成一个线程去处理?
@haochih 如果也要一个线程对应一个 http 请求的话
那高并发怎么能成?
加入 1 亿用户同时并发
单机最多能有 1 万个线程
这意思要用 1 万台机器分压?
2017-03-01 19:44:13 +08:00
回复了 esolve 创建的主题 问与答 tomcat 是不是来一个 http request 就生成一个线程去处理?
@haochih 您好,我想请问一下,如果不是在 BIO 下,例如在 NIO 下,状况是怎样的?在 NIO 下,不是一个 http request 对应一个线程了吗?
2017-03-01 05:43:34 +08:00
回复了 esolve 创建的主题 问与答 tomcat 是不是来一个 http request 就生成一个线程去处理?
@SoloCompany 我没看懂你在说什么。。。
我不是来求问解决方案的
我是来探讨 概念和原理的。。。

我是想知道是不是一个 jsp 页面的 http request 对应一个线程调用 servlet 的 service ()
如果是的,那么假如千万用户同时打开千万个 jsp 页面,那是不是同时千万线程?
2017-03-01 03:04:03 +08:00
回复了 esolve 创建的主题 问与答 tomcat 是不是来一个 http request 就生成一个线程去处理?
@SoloCompany 我知道阻塞 非阻塞 select poll 等
我只是针对 servlet 和 tomcat 的状况
我只是想知道是不是一个 jsp 页面的 http request 对应一个线程调用 servlet 的 service ()
如果是的,那么假如千万用户同时打开千万个 jsp 页面,那是不是同时千万线程?
2017-02-28 18:28:04 +08:00
回复了 esolve 创建的主题 问与答 tomcat 是不是来一个 http request 就生成一个线程去处理?
@Cbdy 还是没懂,丢请求?那怎么高并发?
如果 10 万个请求同时来,线程只能开 1000 个,那 9 万多个请求都被丢掉?
2017-02-28 17:31:08 +08:00
回复了 esolve 创建的主题 问与答 tomcat 是不是来一个 http request 就生成一个线程去处理?
@Cbdy

不懂你在说什么。。。。 我又不是询问什么并发模型好。。。
我是问, java tomcat 下,高并发是不是意味着高线程数
10 万个同时的 http request
就 10 万个线程?
2017-02-26 21:02:17 +08:00
回复了 esolve 创建的主题 问与答 用了一年 Oracle,但是不太会 PL/SQL 可能吗?
@ksupertu navicat 和 PL/SQL 是对应关系?
2017-02-26 21:01:32 +08:00
回复了 esolve 创建的主题 问与答 用了一年 Oracle,但是不太会 PL/SQL 可能吗?
@miao1007 这个话题和 datatrip 关联不大吧,呵呵
2017-02-26 02:27:54 +08:00
回复了 esolve 创建的主题 问与答 用了一年 Oracle,但是不太会 PL/SQL 可能吗?
@wc951 就是说数据库是 oracle ,但是他平时大都用标准 sql 语句或者 ORM 的语句搞定 CRUD 操作
很少用到 PL/SQL ,这个可能吗?
1 ... 8  9  10  11  12  13  14  15  16  17 ... 18  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5828 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 38ms · UTC 06:18 · PVG 14:18 · LAX 22:18 · JFK 01:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.