多线程练习

Posted yumengfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程练习相关的知识,希望对你有一定的参考价值。

package com.qf.work;
/**
 *  张三和妻子各拥有一张银行卡和存折,可以对同一个银行账户进行存取款的操作,请使用多线程及同步方法模拟张三和妻子同时取款的过程。
    要求使用同步方法和同步代码块两种方式实现
    分析
    定义Account类表示银行帐户
    定义两个线程分别实现张三和妻子取款的操作
 */

public class Work4 
    public static void main(String[] args) 
        Account account = new Account();
        
        SaveMoney saveMoney = new SaveMoney(account);
        TakeMoney takeMoney = new TakeMoney(account);
        
        Thread t0 = new Thread(saveMoney);
        Thread t1 = new Thread(takeMoney);
        
        t0.start();
        t1.start();
        
    



class Account
    int sum = 100;
    
    public synchronized void saveMoney() 
        sum += 10;
        System.out.println(Thread.currentThread().getName() +" 存款后:"+ sum);
        
    
    public synchronized void takeMoney() 
        if(sum > 0) 
            sum -= 1;
            System.out.println(Thread.currentThread().getName() +"取款后"+ sum);
        
    


class SaveMoney implements Runnable
    Account account;
    int i = 1;
    
    public SaveMoney(Account account) 
        this.account = account;
    
    @Override
    public void run() 
        synchronized (this) 
            while(i <= 100) 
                account.saveMoney();
                i++;
            
        
    


class TakeMoney implements Runnable
    Account account;
    int i = 1;
    
    public TakeMoney(Account account) 
        this.account = account;
    

    @Override
    public void run() 
        synchronized (this) 
            while(i <= 100) 
                account.takeMoney();
                i++;
            
            
        
        
        
    
    

 

以上是关于多线程练习的主要内容,如果未能解决你的问题,请参考以下文章

java多线程练习题

多个用户访问同一段代码

多线程练习

P364 实战练习(多线程)

Java 多线程练习

linux套接字编程之多进程多线程练习