Presentation is loading. Please wait.

Presentation is loading. Please wait.

并发机制 结果应该为: 线程 1: 1 线程 1: 2 线程 1: 3 线程 1: 4 线程 1: 5 线程 2: 6 线程 2: 7

Similar presentations


Presentation on theme: "并发机制 结果应该为: 线程 1: 1 线程 1: 2 线程 1: 3 线程 1: 4 线程 1: 5 线程 2: 6 线程 2: 7"— Presentation transcript:

1 并发机制 结果应该为: 线程 1: 1 线程 1: 2 线程 1: 3 线程 1: 4 线程 1: 5 线程 2: 6 线程 2: 7 线程 2: 8 线程 2: 9 线程 2: 10 ... 线程 3: 71 线程 3: 72 线程 3: 73 线程 3: 74 线程 3: 75 1、启动 3 个线程打印递增的数字, 线程 1 先打印 1,2,3,4,5, 然后是线程2 打印 6,7,8,9,10, 然后是线程 3 打印 11,12,13,14,15。 接着再由线程 1 打印 16,17,18,19,20....以此类推, 直到打印到 75。 程序的输出如右方所示。 请用多种方法(synchronized、Lock 等)控制 线程,实现输出打印。 给出源代码(对关键代码进行说明)、编译 环境以及执行时间。 总结保证线程安全、同步的方法。

2 2、对于一个账户类Account,有以下定义
class Account { int balance; synchronized void deposit(float amt) {//存款 balance += amt; } synchronized void withdraw(float amt) {//取款 if(balance < amt) throw new OutOfMoneyError(); balance -= amt; 如果在Account中添加以下方法 void transfer(AccountJ other, float amt) { other.withdraw(amt); this.deposit(amt); 试分析,调用该transfer方法时会出现什么问题,如果为该方法添加关键字 synchronized,调用时是否还有问题?

3 面向对象编程与基于对象编程 根据javascript的基于对象编程思想实现以下功能并进行比较说明它们的实现机制的异同:
public class ClassA { public int a = 1; public static int b = 2; public int c() { return 3; } ClassA obj = new ClassA(); System.out.println(obj.a); //输出:1 System.out.println(obj.b); //输出:2 System.out.println(obj.c()); //输出:3


Download ppt "并发机制 结果应该为: 线程 1: 1 线程 1: 2 线程 1: 3 线程 1: 4 线程 1: 5 线程 2: 6 线程 2: 7"

Similar presentations


Ads by Google