码迷,mamicode.com
首页 > 编程语言 > 详细

线程学习1

时间:2016-06-17 12:35:51      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

public class Thread extends Object implements Runnable

线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。

同步监视器,1,不可以是基本数据类型

      2,可以是任意的引用数据类型,但是引用数据类型的引用是不可变花的,内容可以改变。

        3,如果多个代码块使用了同一个监视器,一个里面进行了锁定,则其他的线程都不可以访问



package com.bj.thread1; public class Account { public int acount = 600; public int getAcount() { return this.acount; } public void getMoney(int mon) { this.acount = this.acount - mon; } } package com.bj.thread1; public class GetAcount implements Runnable { Account ac = new Account(); @Override public void run() { withdraw(); } public void withdraw() { synchronized (ac) {    if (ac.getAcount() >= 400) { try { Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } ac.getMoney(400); System.out.println(Thread.currentThread().getName() + "取款成功,余额:" + ac.getAcount()); } else { System.out.println(Thread.currentThread().getName() + "取款不成功,余额不足,余额:" + ac.getAcount()); } } } } package com.bj.thread1; public class TestAccount { public static void main(String[] args) { GetAcount ga = new GetAcount(); Thread t1 = new Thread(ga, "张三"); Thread t2 = new Thread(ga, "李四"); t1.start(); t2.start(); } }

 程序的运行结果是:
张三取款成功,余额:200
李四取款不成功,余额不足,余额:200
因为是多个线程操作同一个对象,所以要实现runnable接口。
因为有同步监视器锁,所以在张三执行线程run方法时,将锁锁住,只有张三执行玩线程的内容,才会把线程开放,可以让就绪中的其他线程抢到执行权。
synchroniezed不可以给run方法同步,会变成单线程

 

线程学习1

标签:

原文地址:http://www.cnblogs.com/xunzhengzhi/p/5593388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!