线程学习笔记-只是简单的应用

原文:https://www.cnblogs.com/riskyer/p/3263032.html
推荐文章:https://blog.51cto.com/lavasoft/27069
1
/** 2 * 线程同步 synchronized 的使用方法 问题:俩个线程调用同一个方法,要通过同步关键字实现 锁。使的方法结果正确 3 * 4 * 预期结果: 5 * test-1 :当前foo对象的x值= 70 test-1 :当前foo对象的x值= 40 test-1 :当前foo对象的x值= 10 6 * test-2 :当前foo对象的x值= -20 test-2 :当前foo对象的x值= -50 test-2 :当前foo对象的x值= -80 7 * 8 */ 9 public class ThreadSynchronized { 10 public static class Foo { 11 private int x = 100; 12 13 public int getX() { 14 return x; 15 } 16 17 public int fix(int y) { 18 x = x - y; 19 return x; 20 } 21 22 } 23 24 public static void main(String[] args) { 25 26 Runnable r = new Runnable() { 27 private Foo foo = new Foo(); 28 29 @Override 30 public void run() { 31 //原理就是给对象上锁,有钥匙的线程才能执行方法,保证一次只会进入一个线程 32 synchronized (foo) { 33 for (int i = 0; i < 3; i++) { 34 foo.fix(30); 35 System.out.println(Thread.currentThread().getName() + " :当前foo对象的x值= " + foo.getX()); 36 } 37 } 38 } 39 }; 40 41 //这个是给线程起名字,线程默认也会给自己取名字的 42 Thread a = new Thread(r, "test-1"); 43 Thread b = new Thread(r, "test-2"); 44 a.start(); 45 b.start(); 46 47 } 48 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwjdww.html