第四章 多线程

1,编写一个程序,创建两个线程对象,每个线程输出1~5的数。
package com.bdqn.demo;

public class Test11 implements Runnable{
	public void run() {
		for(int i=0;i<5;i++) {
			System.out.println(Thread.currentThread().getName()+"正在运行:"+(i+1));
		}
	}
      public static void main(String[] args) {
		Thread t1=new Thread(new Test11(),"线程A");
		Thread t2=new Thread(new Test11(),"线程B");
		t1.start();
		t2.start();
	}
}

2,张三和他的妻子各拥有一张银行卡,可以对同一个账号进行存取款操作。现账户余额为500,每人各取5次,每次100元,在取款过程存在网络延时。要求使用多线程模拟过程。

package com.bdqn.demo;

public class Test12 implements Runnable {
	private int money = 500;
	boolean flag = false;

	public void run() {

		while (!flag) {
			money();
		}
	}

	public synchronized void money() {
		if (money > 0) {
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(Thread.currentThread().getName() + "准备取款\n" + Thread.currentThread().getName() + "完成取款");
			money -= 100;
		}else {
			flag = true;
			System.out.println("余额不足以支付"+Thread.currentThread().getName()+"的取款,余额为"+money);
		}
	}

	public static void main(String[] args) {
		Test12 t = new Test12();
		Thread a1 = new Thread(t, "张三的妻子");
		Thread a2 = new Thread(t, "张三");
		a1.start();
		a2.start();

	}
}

猜你喜欢

转载自blog.csdn.net/jiangmye/article/details/80405879