多线程访问共同资源(队列,多线程,锁机制)
2015-03-16 19:32
323 查看
模拟场景:main方法为网络请求线程(也叫生产者线程),在网络请求线程中开启四个线程(消费者线程),进行高效处理队列中的共同资源(生产者线程生产的共同资源),等待资源处理完毕,网络请求线程执行结束,响应客户端。
消费者线程的线程体
View Code
消费者线程的线程体
MyThread.run(-->)THREAD2【2sxf】 时间: 19:39:06 127 MyThread.run(-->)THREAD3【0sxf】 时间: 19:39:06 127 MyThread.run(-->)THREAD0【1sxf】 时间: 19:39:06 127 MyThread.run(-->)THREAD2【4sxf】 时间: 19:39:06 128 MyThread.run(-->)THREAD0【6sxf】 时间: 19:39:06 128 MyThread.run(-->)THREAD1【3sxf】 时间: 19:39:06 127 MyThread.run(-->)THREAD2【7sxf】 时间: 19:39:06 128 MyThread.run(-->)THREAD0【8sxf】 时间: 19:39:06 128 MyThread.run(-->)THREAD3【5sxf】 时间: 19:39:06 128 MyThread.run(-->)THREAD2【10sxf】 时间: 19:39:06 128 MyThread.run(-->)THREAD3【12sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD1【9sxf】 时间: 19:39:06 128 MyThread.run(-->)THREAD3【14sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD1【15sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD3【16sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD2【13sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD0【11sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD3【18sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD2【19sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD0【20sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD3【21sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD2【22sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD1【17sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD3【24sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD0【23sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD2【25sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD1【26sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD2【29sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD0【28sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD3【27sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD1【30sxf】 时间: 19:39:06 129 MyThread.run(-->)THREAD2【31sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD0【32sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD3【33sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD1【34sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD2【35sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD0【36sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD3【37sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD1【38sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD2【39sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD0【40sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD3【41sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD1【42sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD2【43sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD0【44sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD3【45sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD1【46sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD2【47sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD0【48sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD3【49sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD1【50sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD2【51sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD0【52sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD3【53sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD1【54sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD2【55sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD0【56sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD3【57sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD1【58sxf】 时间: 19:39:06 130 MyThread.run(-->)THREAD3【61sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD2【59sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD0【60sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD1【62sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD3【63sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD0【65sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD1【66sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD3【67sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD0【68sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD1【69sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD3【70sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD2【64sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD0【71sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD2【74sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD3【73sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD0【75sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【76sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD0【78sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【79sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD0【80sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【81sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD0【82sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【83sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD0【84sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【85sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD0【86sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【87sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD0【88sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【89sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD0【90sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【91sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD1【72sxf】 时间: 19:39:06 131 MyThread.run(-->)THREAD0【92sxf】 时间: 19:39:06 133 MyThread.run(-->)THREAD3【77sxf】 时间: 19:39:06 132 MyThread.run(-->)THREAD2【93sxf】 时间: 19:39:06 133 MyThread.run(-->)THREAD0【95sxf】 时间: 19:39:06 133 MyThread.run(-->)THREAD1【94sxf】 时间: 19:39:06 133 MyThread.run(-->)THREAD3【96sxf】 时间: 19:39:06 133 MyThread.run(-->)THREAD0【98sxf】 时间: 19:39:06 133 MyThread.run(-->)THREAD2【97sxf】 时间: 19:39:06 133 MyThread.run(-->)THREAD3notfyAll() MyThread.run(-->)THREAD2notfyAll() MyThread.run(-->)THREAD0notfyAll() MyThread.run(-->)THREAD1【99sxf】 时间: 19:39:06 133 MyThread.run(-->)THREAD1notfyAll() Test.main(完成时间:)19:39:06 133
View Code
相关文章推荐
- 多线程学习之多线程访问共同资源(队列,多线程,锁机制)实例
- java多线程(五)-访问共享资源以及加锁机制(synchronized,lock,voliate)
- 多线程访问同一资源第一步:利用synchronized吃苹果,利用lock锁机制吃梨
- AFX_MANAGE_STATE 解决dll 、多线程访问资源问题
- 使用临界区CRITICAL_SECTION结构对象保护多线程互斥地访问共享资源
- C#多线程编程之:使用Semaphore类限制资源并发访问数
- 把对互斥资源的锁机制访问改为增加一个资源管理线程如何?
- 【讨论】:多线程访问某资源,所有操作为“只读操作”,无写入操作。是否需要加锁?
- 使用对象锁与多线程访问资源控制
- 多线程_并发访问_锁机制_servelt
- C#多线程——多线程访问共同的代码或者对象
- Lucene的多线程访问原则和同步,锁机制
- ZThread的访问共同资源
- 多线程访问共同的代码或者对象:lock避免出错
- python 多线程 +队列下载资源
- Android系统资源访问机制的探讨
- 临界资源访问机制
- .NET中多线程的同步资源访问
- c++多线程例(互斥体,共同访问)
- WPF使用多线程更新UI界面 涉及资源访问需要使用委托处理