当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,