Java 学习之路――线程1

2014-11-24 02:57:46 · 作者: · 浏览: 0

近来学习java的线程的知识。听了听张龙老师讲的课程,感觉受益匪浅。老师的视频很给力,呵呵。

自己练习了一下线程同步的实例:

package com.lcq.ThreadTest;

/**

* 类名:ThreadText4

* 功能:用于测试多线程的同步问题以及解决方法

* 第一个线程运行后就被加上锁,只有运行完成之后其他线程才能运行

* 用synchronized关键字实现同步

* 时间:

* @version 1.0

* @author lcq

*/

public class ThreadText4 {

public static void main(String[] args) {

Bank bank = new Bank();

Thread mt1 = new MoneyThread(bank);

//bank = new Bank();

Thread mt2 = new MoneyThread(bank);

mt1.start();

mt2.start();

}

}

//创建账户类,用于用户的访问,取钱。

class Bank{

//static 变量是被所有的对象共享的变量

//private static int money = 1000;

private int money = 1000;

//访问synchronized方法是表示将该对象上锁

public synchronized int getMoney(int number){

//判断用户的钱和要取得钱是否合法

if(number < 0){

return -1;

}

else if (number > money) {

return -2;

}

else if(money < 0){

return -3;

}

else{

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

money -= number;

//打印出剩余的钱数

System.out.println("left money :" + money);

return number;

}

}

}

//创建取钱线程

class MoneyThread extends Thread {

private Bank bank;

public MoneyThread(Bank bank){

this.bank = bank;

}

@Override

public void run() {

//返回从该账户中取出的钱数

System.out.println("getMoney :" + bank.getMoney(800));

}

}

摘自:找一种安静