原文: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 }
线程学习笔记-只是简单的应用
内容版权声明:除非注明,否则皆为本站原创文章。