Java 学习之路——线程1
近来学习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));
}
}
摘自:找一种安静
补充:软件开发 , Java ,