java线程注销_Java基础-线程

classLipstick {

}classMirror {

}class Makeup extendsThread {intflag;

String girl;static Lipstick lipstick = newLipstick();static Mirror mirror = newMirror();

@Overridepublic voidrun() {//TODO Auto-generated method stub

doMakeup();

}voiddoMakeup() {if (flag == 0) {synchronized(lipstick) {

System.out.println(girl+ "拿着口红!");try{

Thread.sleep(1000);

}catch(InterruptedException e) {

e.printStackTrace();

}synchronized(mirror) {

System.out.println(girl+ "拿着镜子!");

}

}

}else{synchronized(mirror) {

System.out.println(girl+ "拿着镜子!");try{

Thread.sleep(2000);

}catch(InterruptedException e) {

e.printStackTrace();

}synchronized(lipstick) {

System.out.println(girl+ "拿着口红!");

}

}

}

}

}classTestDeadLock {public static voidmain(String[] args) {

Makeup m1= newMakeup();

m1.girl= "大丫";

m1.flag= 0;

Makeup m2= newMakeup();

m2.girl= "小丫";

m2.flag= 1;

m1.start();

m2.start();

}//如何解决死锁问题://1. 往往是程序逻辑的问题。需要修改程序逻辑。//2. 尽量不要同时持有两个对象锁。如修改成如下:

voiddoMakeup() {if (flag == 0) {synchronized(lipstick) {

System.out.println(girl+ "拿着口红!");try{

Thread.sleep(1000);

}catch(InterruptedException e) {

e.printStackTrace();

}

}synchronized(mirror) {

System.out.println(girl+ "拿着镜子!");

}

}else{synchronized(mirror) {

System.out.println(girl+ "拿着镜子!");try{

Thread.sleep(2000);

}catch(InterruptedException e) {

e.printStackTrace();

}

}synchronized(lipstick) {

System.out.println(girl+ "拿着口红!");

}

}

}

}/** 同步是一种解决问题的思路,结合前面卫生间的示例,互斥方式解决多线程的原理是, 当一个人进入到卫生间内部时,别的人只能在外部时刻等待,

* 这样就相当于别的人虽然没有事情做,但是还是要占用别的人的时间, 浪费系统的执行资源。而同步解决问题的原理是,如果一个人进入到卫生间内部时,

* 则别的人可以去睡觉,不占用系统资源,而当这个人从卫生间出来以后, 把这个睡觉的人叫醒[就是wait,notify的应用。],则它就可以使用临界资源了。

* 所以使用同步的思路解决多线程问题更 加有效,更加节约系统的资源。*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值