多线程对同一数据进行不同操作
来源:互联网 发布:linux网络管理命令 编辑:程序博客网 时间:2024/06/06 04:22
示例一:网上多数采用的方法,设计得很巧妙
import java.util.concurrent.atomic.AtomicInteger;public class AddSub {AtomicInteger at = new AtomicInteger(1);int j = 1;public static void main(String[] args) {AddSub ab = new AddSub();Add a = ab.new Add();Sub b = ab.new Sub();Thread t1 = new Thread(a);Thread t2 = new Thread(a);Thread t3 = new Thread(b);Thread t4 = new Thread(b);t1.start();t2.start();t3.start();t4.start();}public synchronized void add(){j++;System.out.println("add:"+j);}public synchronized void sub(){j--;System.out.println("sub:"+j);}class Add implements Runnable{@Overridepublic void run() {for(int i=0;i<20;i++){add();}}}class Sub implements Runnable{@Overridepublic void run() {for(int i=0;i<20;i++){sub();}}}}示例二:采用将数据封装到一个类中进行处理
public class AddSub1 {int j = 10;public static void main(String[] args) {final Sub s = new Sub();for(int i=0;i<2;i++){new Thread(new Runnable() {@Overridepublic void run() {s.add();}}).start();new Thread(new Runnable() {@Overridepublic void run() {s.sub();}}).start();}}}class Sub{int j = 10;public synchronized void add(){j++;System.out.println("add:"+j);}public synchronized void sub(){j--;System.out.println("sub:"+j);}}
0 0
- 多线程对同一数据进行不同操作
- 对同一文件进行多线程写入
- 黑马程序员——java中两个线程对同一个数据做不同操作的安全问题
- 对同一容器中的TextBox进行统一操作
- 分布式程序对同一表进行操作时的sql
- 对下列数据进行操作
- 多线程 《多线程操作同一变量》
- C# winform 不同的窗体对同一XML文件进行读取
- 用批处理对MySQL进行数据操作
- 对表中的数据进行操作
- 3.对数据进行修改操作
- 对远程的数据进行操作
- 数据库对大量数据进行操作
- 用批处理对MySQL进行数据操作
- MYSQL对表数据进行操作
- 点击按钮对数据进行操作(1)
- 点击按钮对数据进行操作(2)
- 使用jq对表格数据进行操作
- ubuntu14.04 下 android 4.2 源码下载
- 链表(4)----反转链表
- vs2012下的cocos2d-x项目,怎样启用控制台进行输出呢?
- 历经风雨,才能看透人心真假;
- ListView
- 多线程对同一数据进行不同操作
- Merge Intervals
- 基于cocos2dx2.2版本安卓环境搭建常见错误解决方法
- 中崎收款机说明书 工厂用扫描枪和超市用扫描枪有何不同
- eclipse启动了tomcat正常,可页面还是404
- 通过打断点调试本地服务程序
- sed 'N;$!D' a
- Hashmap实现原理
- 设计模式:缺省适配器模式