Concurrency and multi-thread learn from Cloud Computer Individual Project 3.2
来源:互联网 发布:制作动漫人物的软件 编辑:程序博客网 时间:2024/06/06 07:43
CC怎么都做不出结果的感觉真是生不如死,
然而做出来之后爽!得!要!死!!!
这次的project是结合了多线程处理的同步并发以及synchronized锁的应用,
做出来之后学到了不少东西。
首先,最重要的是,锁的应用,如何用synchronized以及PriorityBlockingQueue来控制不同进程之间的运行的先后顺序。
在Java中,每个Object有且只有一个锁,而每个类又有且只有一个锁
Write Up中对读写的要求是:
1. 对于不同的key,写的操作要同步进行
2. 对于相同的key,最后存在数据库里的一定要是时间戳最后的那个
3. 读的时候Block写,写的时候也要block读。
思路:
因为不同的Key的写和读是同步进行的,所以每一个Key都要有一个不同的锁
因为同一个Key之间的读写之间需要互斥,所以对于同一个Key要有一个锁lock住读和写
然后通过System.out.println,我们可以得到各个Test是如何测试我们的读写的,
每个Test都用不同的逻辑测试了我们的代码,我们可以利用其反馈来修正我们代码的逻辑。
--------- Test 1 ---------put: a value: 1put: b value: 2put: c value: 3put: d value: 4put: e value: 5put: e value: 5get: a loc: 1get: b loc: 2get: c loc: 2get: d loc: 3get: e loc: 3--------- Test 2 ---------put: a value: 11get: a loc: 1put: b value: 22get: b loc: 2put: c value: 33get: c loc: 2put: d value: 44get: d loc: 3put: e value: 55get: e loc: 3--------- Test 3 & 4 ---------put: a value: 111get: b loc: 2get: a loc: 1put: a value: 1111put: a value: 11111get: a loc: 1get: b loc: 2put: b value: 2222put: b value: 22222put: c value: 3333get: b loc: 2get: c loc: 2--------- Test 5 ---------put: a value: 1111put: a value: 11111put: a value: 111111put: a value: 1111111put: a value: 11111111get: a loc: 1put: b value: 2222put: b value: 22222put: b value: 222222put: b value: 2222222put: b value: 22222222get: b loc: 2put: c value: 3333put: c value: 33333put: c value: 333333put: c value: 3333333put: c value: 33333333get: c loc: 2put: d value: 4444put: d value: 44444put: d value: 444444put: d value: 4444444put: d value: 44444444get: d loc: 3put: e value: 5555put: e value: 55555put: e value: 555555put: e value: 5555555put: e value: 55555555get: e loc: 3--------- Test 6 ---------put: a value: 5put: b value: 4put: c value: 3put: d value: 2put: e value: 1put: e value: 11put: d value: 22put: c value: 33put: b value: 44put: a value: 55put: b value: 444put: b value: 4444put: a value: 555put: a value: 55555put: a value: 555555put: a value: 55555555put: b value: 44444444put: c value: 33333put: c value: 333333put: c value: 3333333put: c value: 33333333put: d value: 22222put: d value: 222222put: d value: 2222222put: d value: 22222222put: e value: 11111put: e value: 111111put: e value: 1111111put: e value: 11111111get: a loc: 1get: e loc: 3get: b loc: 2get: c loc: 2get: a loc: 1get: d loc: 3
Test1,2都很简单,一个是先全部写,再全部读,另一个是写一个读一个。
我们可以利用Test1,2的反馈来测试我们是否正确利用了API。
一开始我就是没用对API,导致了输出怎么都不对。
0 0
- Concurrency and multi-thread learn from Cloud Computer Individual Project 3.2
- 07 concurrency and Multi-version
- Can the Computer Learn from Experience
- difference between Multi process and multi thread
- Learn from Synchronized and BlockingQueue
- Java Multi-Threading and Concurrency Interview Questions with Answers
- android multi process and single thread principle
- Concurrency 2, thread and promise - C++11, 9 of n
- iOS7 Programming Cookbook-Chapter 7-Concurrency(Timer and Thread部分)
- 论文阅读:Fast and Accurate Semiautomatic Segmentation of Individual Teeth from Dental CT Images
- WWDC-Watch and learn from our Engineers
- multi-thread
- Multi-Thread
- multi thread
- 为什么很少有Java程序员精通Multi-threading, Concurrency and Garbage Collection?
- 萬惡的cmake - vs project unicode and multi-bytes
- Multi-thread: What is the difference between OpenMP and MPI
- MVCC-multi version concurrency control
- 数据库的检查约束check约束
- 多tomcat 同一个浏览器 同一个项目 会导致session覆盖
- C#代码生成器
- Xcode7 App Transport Security has blocked a cleartext HTTP (http://) resource load
- PHP中9大缓存技术总结
- Concurrency and multi-thread learn from Cloud Computer Individual Project 3.2
- 保证前端数据实时性 --- js异步轮询
- 我写过的脚本(定时重启设备)
- int,long,long long,__int64
- My97 datePicker (WdataPicker)
- 一个请求在Struts2框架中的处理步骤
- 九度OJ 1188:约瑟夫环 (约瑟夫环)
- c++学习(一)
- [问题][已解决]java.io.IOException: Last packet not finished