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));
	}
	
}


线程刚刚开始,很重要,但是更加重要的还在后边,希望自己会坚持学好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值