各位好最近小弟在写socket的例子,其中用到了多线程。遇到的问题是这样的,在server端,有一个线程专门负责接收,并存入公共容器container;另有一线程专门负责从container里取数据来处理,为了防止收过快或者处理过快,特作出了以下限制:1.container里数据快满了时,收线程sleep 1秒,等待处理线程处理一下;
2.处理线程看到container里快没数据时,也sleep 1秒,等待收线程收一下。但我发现,运行时,两个线程并不是无序地运行,而总是收线程先将container收满,处理线程再进行处理,然后收线程再将container收满。以我个人的观点,这两个线程应该是乱序进行的,不是吗?
2.处理线程看到container里快没数据时,也sleep 1秒,等待收线程收一下。但我发现,运行时,两个线程并不是无序地运行,而总是收线程先将container收满,处理线程再进行处理,然后收线程再将container收满。以我个人的观点,这两个线程应该是乱序进行的,不是吗?
不过话说,为啥要防止接收过快或者处理过快呢?没看出必要性啊,没东西处理就轮空一次呗,可以用Thread.yield()释放时间片。
高级点的用队列。
接收线程看容器快满了,就等等处理线程。lol,结贴喽。