Java类锁
来源:互联网 发布:淘宝卖家信誉等级 编辑:程序博客网 时间:2024/06/07 15:48
/**
* Created by 风凌渡口 on 2017/6/21.
*/
public class TestThread {
public static void main(String[] args) { Person p1 = new Person(); p1.name = "杨过"; Person p2 = new Person(); p2.name = "小龙女"; Thread t1 = new MyThread1(p1); t1.setName("杨过线程"); t1.start(); Thread t2 = new MyThread2(p2); t2.setName("小龙女线程"); t2.start();}
}
class MyThread1 extends Thread{
private Person person;public MyThread1(Person person) { this.person = person;}@Overridepublic void run() { System.out.println("111111111111111"); person.setAge(22); System.out.println("??????????????????????????"); System.out.println(Thread.currentThread().getName() + person.name + person.getAge() + person.getLanguage()); System.out.println("555555555555555");}
}
class MyThread2 extends Thread{
private Person person;public MyThread2(Person person) { this.person = person;}@Overridepublic void run() { System.out.println("222222222222222222"); person.age = 23; person.setLanguage("C++"); System.out.println(Thread.currentThread().getName() + person.name + person.getLanguage()); System.out.println("3333333333333333333333333333");}
}
/**
* Created by 风凌渡口 on 2017/5/19.
*/
public class Person {
public String name;
public static int age;
public static String language;
public Person() {}synchronized static int getAge() { return age;}synchronized static void setAge(int age) { System.out.println("设置年龄时间" + System.currentTimeMillis()); Person.age = age; try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); }}synchronized static String getLanguage() { System.out.println("获取语言时间" + System.currentTimeMillis()); return language;}static void setLanguage(String language) { Person.language = language;}
}
控制台打印:
222222222222222222
获取语言时间1498016105993
小龙女线程小龙女C++
3333333333333333333333333333
111111111111111
设置年龄时间1498016105993
??????????????????????????
获取语言时间1498016110994
杨过线程杨过22C++
555555555555555
结论:
在设置年龄之后5秒钟才可以获取语言
原因:
年龄和语言都是类成员,设置年龄时Class对象被锁定,线程休眠,不释放锁,因此,不能获取语言,5秒后,锁被释放,获取语言,
注:
控制台显示先启动线程2,也有情况先启动线程1,但不影响结论
阅读全文
0 0
- Java类锁
- java对象锁&类锁
- Java中对象锁,类锁
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- java
- 解决vs2005打开UTF-8编码的文件乱码和修改新增文件时的默认编码方式的问题
- 添加特定分贝(db)的高斯噪声的一种简单方法
- POJ --- 1679 【判断最小生成树是否唯一】
- iOS控制器在push或者pop时导航栏出现黑块的解决办法
- OpenGL学习——(2)概念补充
- Java类锁
- 关于智能IVR系统的一些思考
- 算法概论课后8.9
- 【Python】Python数据分析环境搭建02
- Webservice返回json数据格式不带xml头部
- UVA --- 10462 【次小生成树】
- 36 linux内核里的HZ定时器与timer_list定时器
- mysql binlog转sql
- Umeng注册测试设备部分无日志