注:这里inc方法和dec方法加synchronized关键字是因为当两个线程同时操作同一个变量时,就算是简单的j++操作时,在系统底层也是通过多条机器语句来实现,所以在执行j++过程也是要耗费时间,这时就有可能在执行j++的时候,另外一个线程H就会对j进行操作,因此另外一个线程H可能操作的可能就不是最新的值了。因此要提供线程同步。

版本2:

本版本不需要synchronized,而用AtomicInteger代替

package com.yx.zzg;

public class ThreadTest1 {

   private AtomicInteger j=new AtomicInteger();public static void main(String args[]) {

        ThreadTest1 tt = new ThreadTest1();

        Inc inc = tt.new Inc();

        Dec dec = tt.new Dec();

        for (int i = 0; i < 2; i++) {
Thread t = new Thread(inc);
t.start();
t = new Thread(dec);
t.start();
} } private synchronized void inc() {
j.incrementAndGet();
System.out.println(Thread.currentThread().getName() + "-inc:" + j);
} private synchronized void dec() {
j.decrementAndGet();
System.out.println(Thread.currentThread().getName() + "-dec:" + j);
} class Inc implements Runnable { public void run() {
for (int i = 0; i < 100; i++) {
inc();
}
}
} class Dec implements Runnable { public void run() {
for (int i = 0; i < 100; i++) {
dec();
}
}
} }

最新文章

  1. 【Java并发编程实战】-----&ldquo;J.U.C&rdquo;:锁,lock
  2. c#.net 生成清晰缩略图
  3. 关于在Eclipse中运行java程序报出:The project:XXXX which is referenced by the classpath10
  4. 用git写书
  5. QQ微信的备份
  6. 13 SELECT 以外的内容
  7. MYSQL数据库错误代码提示汇总
  8. BootStrap2学习日记3--响应式布局实用类
  9. 判断iPhone和iPad 判断设备版本
  10. mysql 数据库查询与实例。
  11. h.264 fast,1/2,1/4像素运动估计与插值处理
  12. 命名空间“System.Windows.Forms”中不存在类型或命名空间名称“DataVisualization”。是否缺少程序集引用?
  13. Java基础——数据类型
  14. shell快捷键
  15. C运算符
  16. ReactiveCocoa基础
  17. Python 编程快速上手 第七章总结
  18. 【Python】进程-控制块
  19. asp.net 中日期的格式化显示的方法
  20. @Id 和 @column 注解 使用注意

热门文章

  1. BibTex参考文献制作
  2. Ta-lib 函数一览
  3. Asp.net通过Jquery操作WebService进行Ajax读写
  4. Android使用service后台更新计划任务
  5. C# 有关命名法
  6. 第一章 OO大智慧
  7. 使用jquery获取url及url参数的方法及定义JQuery扩展方法
  8. redis学习笔记——(4)
  9. 第三十课:JSDeferred详解1
  10. 使用PowerDesigner创建表并导入到数据库