多线程-线程同步、异步

多线程-线程同步、异步 标签:共享 休眠 ide 开始 getname zed ble 共享资源

多线程-线程同步、异步

标签:共享休眠ide开始getnamezedble共享资源方法调用

同步和异步

  同步和异步通常用来形容一次方法的调用。同步方法调用一旦开始,调用者必须完成所有的操作一直到方法调用结束,其他调用者才能继续后续的行为,

异步方法调用类似一个消息传递,一旦开始,方法调用就会立即返回,其他调用者则可以无需等待,可以立即继续后续的操作。

异步:

不过, 如果 我们 赶时髦, 就坐 在家 里 打开 电脑, 在 网上 订购 了 一台 空调。 当你 完成 网上 支付 的 时候, 对 你来 说 购物 过程 已经 结束 了。 虽然 空调 还没 送 到家, 但是 你的 任务 都已 经 完成 了。 商家 接到 了 你的 订单 后, 就会 加紧 安排 送货, 当然 这一 切 已经 跟你 无关 了。 你 已经 支付 完成, 想 干什么 就 能去 干什么, 出去 溜 几 圈 都不 成问题, 等 送货上门 的 时候, 接到 商家 的 电话, 回家 一 趟 签收 就 完事 了。 这就 是 异步 调用。

public class MyThread3 {
private synchronized void method1() {
try {
System.err.println(\”线程:\” + Thread.currentThread().getName());
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private void metho2() {
System.err.println(\”线程:\” + Thread.currentThread().getName());
}

public static void main(String[] agrs) {
MyThread3 t = new MyThread3();
Thread a = new Thread(new Runnable() {
@Override
public void run() {
t.method1();
}
}, \”t1\”);
Thread b = new Thread(new Runnable() {
@Override
public void run() {
t.metho2();
}
}, \”t2\”);
a.start();
b.start();
}

}

运行结果:

同步:

打个 比方, 比如 我们 去 购物, 如果 你去 商场 实体 店 买 一台 空调, 当你 到了 商场 看 中了 一 款 空调, 你就 想 售货员 下单。 售货员 去 仓库 帮你 调配 物品。 这 天 你 热得 实在 不行了, 就 催 着 商家 赶紧 给你 送货, 于是 你就 等在 商 店里, 候 着 他们, 直到 商家 把你 和 空调 一起 送 回家, 一次 愉快 的 购物 就 结束 了。 这就是 同步 调用。

/**
* 同步:synchronized
* 同步的概念就是共享,如果不是共享资源则没必要进行同步;同步的目的是为了线程安全,线程安全只需要满足该特性:原子性(同步)、可见性
*/

private

作者: 安兔兔

为您推荐

返回顶部