Java线程编程题目,求高手解答...
假设某个银行,它可以接受顾客的汇款,每做一次汇款,便可以计算出汇款的总额。现在有两个顾客对同一个银行账号操作,一个顾客分3次,每次将100元钱存入,每次存入后将钱的总额输...
假设某个银行,它可以接受顾客的汇款,每做一次汇款,便可以计算出汇款的总额。现在有两个顾客对同一个银行账号操作,一个顾客分3次,每次将100元钱存入,每次存入后将钱的总额输出;另外一个顾客也分3次,每次取出100元钱,每次取出后将剩余的钱的总额输出。编写一个程序模拟实际的操作过程。
展开
2个回答
展开全部
这个是关于线程的锁定的,可以参考下以下代码:
package 线程的使用;
public class 汇款设计 {
public static void main(String[] args) {
C c1=new C();
C c2=new C();
c1.start();
c2.start();
}
}
class CB{
private static int s=0;
public static void add(int n){
String a="";
synchronized(a){
int t=s;
t+=n;
try {
Thread.sleep((int)(1000*Math.random()));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
s=t;
System.out.println("当前汇款是:"+s);
}
}
}
class C extends Thread{
public void run(){
for(int i=1;i<=3;i++){
CB.add(100);
}
}
}
package 线程的使用;
public class 汇款设计 {
public static void main(String[] args) {
C c1=new C();
C c2=new C();
c1.start();
c2.start();
}
}
class CB{
private static int s=0;
public static void add(int n){
String a="";
synchronized(a){
int t=s;
t+=n;
try {
Thread.sleep((int)(1000*Math.random()));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
s=t;
System.out.println("当前汇款是:"+s);
}
}
}
class C extends Thread{
public void run(){
for(int i=1;i<=3;i++){
CB.add(100);
}
}
}
展开全部
/**
*大概模式就这样。可以套用线程的使用。
*/
package huikuan;
import java.util.Scanner;
public class HuiKuan {
public static void main(String[] args) {
String zhanghao = "123456";
long money = 0l;// 钱的总额
Scanner choose = new Scanner(System.in);
int i = 0;
while (true) {
System.out.println("1:汇款\n2:取钱");
i = choose.nextInt();
synchronized (money + "") {
switch (i) {
case 1:
System.out.println("汇款多少元:");
money += new Scanner(System.in).nextLong();
break;
case 2:
System.out.println("取款多少元:");
money -= new Scanner(System.in).nextLong();// 这里暂时不给你写是否钱数够取走。
break;
default:
System.out.println("ERROR~!");
}
System.out.println("钱的总额:" + money);
}
}
}
}
*大概模式就这样。可以套用线程的使用。
*/
package huikuan;
import java.util.Scanner;
public class HuiKuan {
public static void main(String[] args) {
String zhanghao = "123456";
long money = 0l;// 钱的总额
Scanner choose = new Scanner(System.in);
int i = 0;
while (true) {
System.out.println("1:汇款\n2:取钱");
i = choose.nextInt();
synchronized (money + "") {
switch (i) {
case 1:
System.out.println("汇款多少元:");
money += new Scanner(System.in).nextLong();
break;
case 2:
System.out.println("取款多少元:");
money -= new Scanner(System.in).nextLong();// 这里暂时不给你写是否钱数够取走。
break;
default:
System.out.println("ERROR~!");
}
System.out.println("钱的总额:" + money);
}
}
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询