{{sellerTotalView > 1 ? __("sellers", {number: sellerTotalView}) : __("seller", {number: sellerTotalView}) }}, {{numTotalView > 1 ? __("items", {number: numTotalView}) : __("item", {number: numTotalView}) }}
free FREE

Change Your Zip Code

Inventory information and delivery speeds may vary for different locations.

Location History

{{email ? __('Got it!') : __('Restock Alert')}}

We will notify you by email when the item back in stock.

Cancel
Yami

Jingdong book

Scala 并发编程

{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}

Scala 并发编程

{{__(":people-members", {'people': item.limit_people_count})}} {{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
Ends in
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{itemDiscount}}
{{ itemCurrency }}{{ item.valid_price }}
Sale ends in
Sale will starts after Sale ends in
{{ getSeckillDesc(item.seckill_data) }}
{{ __( "Pay with Gift Card to get sale price: :itemCurrency:price", { 'itemCurrency' : itemCurrency, 'price' : (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00') } ) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) Details
Best before

Currently unavailable.

We don't know when or if this item will be back in stock.

Unavailable in your area.
Sold Out

Details

Full product details
Editer Recommend

√ 本书由Scala发明人亲传弟子执笔完成,颇具权威性
√ 语言之外,系统性地梳理了并发及并发编程的核心知识
√ 重点讲解Future和Promise API等Scala专用并发框架的用法
√ 实例精心,兼顾理论与实践,既启发编程思路又面向实战方法
Content Description

免费的性能午餐已经结束――Intel、AMD 和 Sparc、PowerPC 等主要的处理器生产厂商,从前使用的提高 CPU 性能的传统方法已经走到尽头,单核处理器的主频多年来一直踏步不前,当今主流的CPU 制造技术是超线程和多核架构。面对计算机性能的挑战和硬件架构的改变,迷惘的软件开发者们应何去何从?本书为大家展示了一条光明的康庄大道!

《Scala 并发编程》由 Scala 语言的发明者,瑞士洛桑联邦理工大学教授 Martin Odersky 的爱徒 Aleksandar Prokopec 博士撰写。作者根据自己在 Scala 语言开发团队中的工作经验,全面地介绍了并发编程技术。这些并发编程技术包括:并发程序设计的基础知识和背景知识、常用并发实用组件(如线程池、原子变量和并发集合)的用法、Scala 专用并发框架(Future 和 Promise API)的用法、Scala 并行集合框架的用法、使用响应式扩展框架编写基于事件的程序和异步程序的方式、用于编写事务程序的 ScalaSTM库以及 Actor 编程模型和 Akka 框架。作者在本书中列举的实例既介绍了理论知识又展示了实践方法,同时还能够开拓读者的编程思路。此外,作者还在每章末尾提供了大量编程习题,帮助读者测试和巩固知识。

Author Description

Aleksandar Prokopec,是一位软件开发者,同时也是并发和分布式编程技术研究者。他拥有克罗地亚萨格勒布大学电子工程和计算学院的计算机专业硕士学位和瑞士洛桑联邦理工大学(EPFL)的计算机科学专业博士学位。作为 EPFL 博士助教和 Scala 语言开发团队成员,他积极为 Scala 编程语言做贡献,研究并发编程抽象、并行数据编程支持和 Scala并发数据结构。他编写了 Scala Parallel Collections 框架,这是一个高级的 Scala 并行数据编程库。他还参加了多个 Scala 并发库开发小组,开发了 Future、Promise 和 ScalaSTM 等抽象。


苏宝龙,1999年毕业于辽宁石化大学计算机系,从事过计算机硬件维修、网络和网站架设等计算机专业实践工作。投身计算机图书翻译行业已有十余年,译著超过三十余部,是一位优秀的、负责任的译者。

Comments

本书详细介绍了最佳的并发编程习惯,以及当前流行的高级Scala并发库的用法。本书先介绍在JVM中编写并发程序的基础知识,并概括介绍了Java内存模型的基础结构,然后展示了一些经典的并发程序构建材料,如原子变量、线程池、并发数据结构和并发事务的要点。之后本书介绍了多种专门与特定任务对应的高级并发抽象。最后,本书总结了这些并发库的用法和将它们组合到一起使用的方式。
□ 在现代多处理器系统(尤其是JVM并发模型)中,编写并发程序的基础知识
□ 使用简单的、低等级并发基元创建高性能并发系统的方式
□ 使用Future和Promise对象在并发计算中实现异步操作
□ 使用并行数据集合,以无缝方式提高顺序程序的性能
□ 通过Rx式事件流实现响应式和基于事件的程序
□ 使用内存事务数据模型,设计安全、可伸缩的且易于组装的程序
□ 编写具有透明性的、可部署到多台计算机上的分布式应用程序
□ 根据具体情况选择正确并发抽象的技巧,以及在大型应用程序中整合多种并发框架的方式
Catalogue

前言 XVII

1 简介 1

2 JVM 和Java 内存模型中的并发处理方式 13

3 构建并发程序的传统材料 47

4 使用Future 和Promise 对象编写异步程序 85

5 数据并行集合 121

6 使用Reactive Extensions 编写并发程序 153

7 基于软件的事务内存 189

8 Actor 227

9 实用并发技术 269

Book Abstract


并发和并行编程技术已经从内核程序设计和高性能计算等尖端领域延伸而出,发展成为每位程序员都必备的知识。当前并行和分布式计算系统已经变成了一种规范,大多数应用程序都使用并发处理方式,有些程序是为了提高性能,也有些程序是为了处理异步事件。
目前,大多数开发者都没有做好迎接这场变革的准备工作。也许他们在学校学习过传统的并发模型(基于线程和锁的),但是这类模型无法在确保可接受生产效率的前提下,以可靠的方式处理海量的并发工作。而且,线程和锁不仅难以使用还易于出错。开发者如果想要提高自己的水平,就必须使用等级更高且可组合性更高的并发抽象。
15 年前,我设计了Scala 语言的前身Funnel 语言。Funnel 是一种实验性编程语言,其核心中含有并发语义。这门语言将所有编程概念都表现为,以functional Net 模型(joincalculus 模型的面向对象版本)为基础的语法糖。尽管join calculus 是非常优秀的理论,但经过一些实验后,我们认识到并发问题是多层面的,无法通过单一形式解决它。解决所有并发问题的万能灵药是不存在的;正确的解决方式是对症下药。你是否想要定义用于回应事件或数据流的异步计算?是否想要创建用于通过消息进行通信的独立实体?是否想要为可变数据定义事务?是否想要通过并行处理方式提高性能?Scala 语言提供了完成所有这些任务的抽象:Future 类、响应式事件流、Actor 类、事务内存和并行集合。
Scala 和这本书使我们走到了一起。当前有如此多的优秀并发抽象,通过编程语言以硬编码的方式实现它们好像意义不大。但我们通过Scala 努力实现的目标,是能够在用户代码和库中更轻松地定义高级抽象的。通过这种工作模式,开发者可以定义用于处理各种并发程序设计层面的模块。所有这些模块都会建立在由主机系统提供的低等级内核上。现在回过头来看,这种工作模式确实取得了很好的效果。Scala 拥有当今功能最强、结构最简洁的并发编程库。本书将带你领略其中最重要的几个库的风采,使你了解这些库的擅长领域和使用它们的方式。
不是计算机专家就写不好计算机书籍。本书的作者Aleksandar Prokopec 编写过多个最流行的Scala 并发和并行编程库,他还发明过多个精妙的数据结构和算法。在推出这本书的同时,他还创建了网上教程和权威参考站点。我相信本书能够成为所有Scala 并发和并行程序开发者的良师益友。我期望这本书能够成为对并发领域感兴趣的人的书架藏品,因为他们都预见到了正在快速发展的并发计算领域的美好未来。Martin Odersky
Scala 语言的发明者,瑞士洛桑联邦理工大学教授
Introduction

并发处理方式无处不在。随着多核处理器在消费者市场中崛起,并发编程技术也在软件开发行业内取得了霸主地位。并发编程技术以前就在程序或计算机系统中被用于实现异步计算,并且自成一个学术领域,而现在并发程序设计已经变成了开发人员普遍使用的软件开发技术。因此,高级并发框架和库正在以惊人的速度发展。近年来,并发计算领域呈现出了与文艺复兴类似的蓬勃发展景象。

随着现代编程语言和并发框架抽象等级的提高,了解和使用这些语言和框架的时机已经变为极为重要的知识。仅掌握经典并发和异步基元(如线程、锁和监控器)的使用方式,已经不足以应对当前的形势。高级并发框架既可以解决传统并发问题,也可以为特定任务做出调整。因此,高级并发框架逐渐占领了并发编程领域。

本书介绍Scala 语言高级并发编程技术。本书不仅详细介绍了各种并发主题,还介绍了并发编程的基础理论。同时,本书也介绍了多种主要的现代并发框架、这些框架的语义细节和使用这些框架的方式。这样做的目的是展示重要的并发抽象,同时让你了解在实践中使用这些抽象的方式。

我们相信当你阅读了这本书后,既可以掌握坚实的并发编程理论基础,又能够获得编写正确、高效并发程序的实用技巧。这些技巧是通向现代并发编程专家之路的基石。希望本书能够为你带来快乐。

本书的结构

本书的主要目标是帮助你掌握开发正确、高效并发程序的必备技巧。获得技巧的最佳方式是在实践中使用它。因此,获得编程技巧的最佳方式,是亲手编写程序。本书旨通过一系列精心挑选的案例程序,全方位向你展示并发编程技术,从而使你掌握使用Scala语言编写并发程序的方式。这些案例程序包括从最简单的Hello World 示例程序,到错综复杂的高级并发程序。

本书中程序的一个最大共同点是,既简洁又独立。选取这类程序的优点有两个。首先,你可以不受干扰地学习大多数案例程序。尽管我们建议你按照先后顺序阅读本书的各个章节,但如果你想要先关注某个主题也不会有问题。其次,简洁性可以确保每个新概念都能够易于被掌握和理解。通过简单的示例程序,理解原子处理方式、内存争用和忙等待等问题要容易得多。但这不意味着这些示例程序,仅是为展示这些概念而专门编写的;尽管有些案例程序可能会被删去不相关的部分,但每个案例程序都是选自现实世界的真实案例。我们强烈建议你在阅读本书的过程中,亲手编写和运行这些示例程序,而不应仅是消极地阅读它们。每个案例程序都会向你展示一个新概念,但是你只有亲手在实践中使用这些概念,才能彻底理解它们。通过亲手运行并发程序并观察其特殊效果获得的经验,比仅从纸上阅读它得到的经验要宝贵得多。因此,你应该下载SBT,并在阅读本书前创建一个空白项目,这一点请参阅本书中介绍的详细步骤。本书选取的案例程序都比较短小,从而使你能够毫无压力地尝试它们。本书每一章的末尾都有一组编程练习。这些练习专门用于测试你对该章内容的理解程度。我们建议你在阅读完一章内容后,至少做几道该章末尾的练习题。在大多数情况中,我们会避免展示API 方法和它们的确切签名。这样做的原因有多个。

首先,你随时可以在网上学习ScalaDoc 文档介绍的API。本书如果重复这些内容会浪费一些篇幅。其次,软件永远都处于不断变化的状态中。尽管Scala 并发框架的设计者们努力使这些API 具有稳定性,但这些方法的名称和签名也可能会偶尔改变。本书介绍了改变可能性不高的许多重要并发工具的语义,使用这些工具足以编写并发程序。本书的目标不是事无巨细地介绍Scala 并发API 的所有知识。本书旨在介绍最重要的并发编程概念。掌握了本书介绍的知识后,你不仅可以阅读网上文档介绍的补充资料,还可以明确寻找这些资料的方向。本书不是详细介绍每个方法确切语义的API 参考文档,教授你从这些参考资料获取知识的方式才是本书的目的。当你阅读了本书的内容后,你不仅可以了解各种并发库不同的运行方式,还能获得编写并发程序的思路。

本书的内容

本书根据各个并发编程主题,划分为多个章节。本书的内容涵盖Scala 运行时系统中的基础并发API、较复杂的并发基元和高级并发抽象概要。

第1 章介绍编写并发程序的原因和一些背景知识。本章也介绍了Scala 编程语言的基础知识,以便使你能够顺畅地阅读本书后面介绍的内容。

第2 章介绍并发程序设计的基础知识。本章介绍了使用线程的方式、防止以并发方式访问共享内存的方式,以及Java 内存模型(JMM)。__第3 章介绍常用的并发实用组件,如线程池、原子变量和并发集合。本章还着重介绍了使用并发集合与Scala 语言功能进行交互的方式。本书将重点放在高等级的现代并发编程框架上;因此,虽然本章概述了传统的并发编程技巧,但并非将重点放在这个方面。

第4 章是第一个介绍Scala 专用并发框架的章节。本章介绍了Future 和Promise API,以及在编写异步程序时正确使用这些API 的方式。

第5 章介绍Scala 并行集合框架。本章介绍了在条件允许的情况下,通过并行方式处理集合操作的方式,以及通过这种方式提高性能的手段。

第6 章介绍使用响应式扩展框架编写基于事件的程序和异步程序的方式。本章会介绍事件流操作与集合操作的对应关系、在线程之间传递事件的方式和使用事件流设计响应式用户界面的方式。

第7 章介绍用于编写事务程序的ScalaSTM 库,使用该库可以获得更加安全、更加直观的共享内存编程模型。本章会介绍使用可伸缩的内存事务防止多个线程以并发方式访问共享内存的方式,还会介绍减少死锁和竞态条件的方式。

第8 章介绍Actor 编程模型和Akka 框架。本章会介绍编写在多台计算机上运行的、以透明方式传递消息的分布式程序的方式。

第9 章总结了前面各章介绍过的多种并发库。本章会介绍根据指定问题选择正确并发抽象的方式,还会介绍当设计较大的并发应用程序时,将多种并发抽象组合到一起的方式。我们建议你根据先后顺序阅读各个章节,但这并非严格要求。如果你已经很好地掌握了第2 章介绍的内容,就可以直接学习大多数章节。对其他章节介绍的知识依赖程度较高的是第9 章,因为这一章是对前面介绍的各个主题的总结。

阅读本书前需要具备的知识

本节介绍阅读本书之前,你需要具备的知识。本节介绍了安装Java Development Kit(Java 开发工具集)的方式,它是用于运行Scala 程序的开发环境;还介绍了使用SimpleBuild Tool(SBT)项目构建工具运行各种示例程序的方式。阅读本书前无须具备IDE 知识。你可以根据自己的喜好选择编写代码的编辑器,如Vim、Emacs、Sublime Text、Eclipse、IntelliJ IDEA 和Notepad++等文本编辑器。

安装JDK

Scala 程序不会被直接编译为机器码,因此它们无法像可执行程序那样在各种硬件平台上直接运行。Scala 编译器生成的是一种中间代码——Java 字节码。要运行这种中间代码,你的计算机必须安装Java 虚拟机(JVM)软件。本节介绍下载和安装Java Development Kit的方式,该开发环境集成了Java 虚拟机和其他有用的工具。软件市场上有多个JDK 版本。我们建议你使用Oracle JDK 分发版本。你可通过下列步骤下载和安装这个版本的Java Development Kit:

1.在你的浏览器中打开URL:www.oracle.com/technetwork/java/javase/

downloads/index.html。

2.如果你无法打开这个URL,可以在搜索引擎中搜索关键字JDK Download。

3.一旦你找到Oracle 网站中的Java SE 下载链接,应下载与你当前使用的操作系统(如32 位或64 位的Windows、Linux 或者Mac OS X)对应的JDK 7 版本。

4.如果你使用Windows,那么只需运行安装程序即可。如果你使用Mac OS X,则需要打开dmg 存档才能安装JDK。如果你使用Linux,则需要将dmg 存档解压到XYZ 目录,并在PATH 变量中添加bin 子目录:export PATH=XYZ/bin:$PATH

5.现在你就能够在命令行界面中运行java 和javac 命令了。输入javac 命令,查看该命令是否可用(本书没有介绍配置这个命令的方式,但你可以通过运行它,查明它是否可用):

javac这样你的操作系统就安装好了JDK。要验证这一点,只需执行javac 命令,如第5步骤所示。

安装和使用SBT

SBT 是一种用于构建Scala 项目的命令行工具。它的作用是编译Scala 代码、管理依赖关系、进行持续编辑和测试、开发等。本书通篇都会使用SBT,管理项目的依赖关系和运

行示例程序。

通过下列步骤可以安装SBT:

1.浏览https://www.scala-sbt.org/。

2.下载与你所用平台对应的安装文件。如果你使用Windows,应下载msi 安装文件。如果你使用Linux 或Mac OS X,应下载zip 或tgz 归档文件。

3.安装SBT。如果你使用Windows,只需运行安装文件即可。如果你使用Linux 或Mac OS X,则应在主目录解压归档文件。

安装好SBT 后就可以使用它了。通过下列步骤可以创建新的SBT 项目:

1.如果你使用Windows,应打开命令行界面。如果你使用Linux 或Mac OS X,应打开一个终端窗口。

2.创建一个名为scala-concurrency-examples 的新目$ mkdir scala-concurrency-examples

3.切换到scala-concurrency-examples 目录:$ cd scala-concurrency-examples

4.创建一个用于存储示例程序的源代码$ mkdir src/main/scala/org/learningconcurrency/

5.使用编辑器创建定义文件build.sbt。该文件用于定义各种项目属性。应在项目的根目录(scala-concurrency-examples)中创建该文件。应向定义文件中添加下列内容(注意,必须保留空白行):name := "concurrency-examples"version := "1.0"scalaVersion := "2.11.1"

6.切换回终端窗口,并在项目的根目录运行SBT:

$ sbt

7.SBT 会启动一个响应式壳,我们可以使用该壳执行各种创建项目的命令。现在你就可以编写Scala 程序了。打开编辑器, 在src/main/scala/org/learningconcurrency 目录中创建一个名为HelloWorld.scala 的源代码文件。向HelloWorld.scala 文件中添加下列内容:package org.learningconcurrencyobject HelloWorld extends App {println("Hello, world!")}

切换回已经启动SBT 响应式壳的终端窗口,使用下面的命令运行这个程序:

> run

该程序运行后会输出下面的结果:

Hello, world!

通过上述步骤足以运行本书介绍的大部分示例程序。在运行这些示例程序时,偶尔可能会用到外部库。SBT 能够通过标准软件仓库自动解决部分外部库问题。在处理另一些外部库时,我们需要手动设置额外的软件仓库,因而需要向build.sbt 文件添加下面的代码:

resolvers ++= Seq(

"Sonatype OSS Snapshots" at

"https://oss.sonatype.org/content/repositories/snapshots",

"Sonatype OSS Releases" at

"https://oss.sonatype.org/content/repositories/releases",

"Typesafe Repository" at

"https://repo.typesafe.com/typesafe/releases/")

现在我们已经添加了所有必要的软件仓库,因而就能够添加一些具体库了。通过向build.sbt 文件添加下面的代码,我们就可以使用Apache Commons IO 库:libraryDependencies += "commons-io" % "commons-io" % "2.4"更改了build.sbt 文件的内容后,必须重新加载所有正在运行的SBT 实例。应在SBT的响应式壳中,输入下列命令:> reload

这能够使SBT 检测到定义文件的所有更改情况,并在必要时下载额外的软件包。不同的Scala 库拥有不同的命名空间,这种命名空间称为软件包。要获取指定软件包的内容,需要使用import 语句。当我们第一次在某个示例程序中使用指定的并发库时,总是会展示必要的import 语句组。如果之后还需要使用相同的库,我们不会重复列出相同的import 语句。与此类似,为简洁起见我们不会在示例代码中重复列出软件包声明。我们约定一章中的示例代码都处于同一软件包中。例如, 第2 章中的所有示例代码都处于

org.learningconcurrency.ch2 软件包中。该章中每个示例程序的源代码文件都以下列代码开头:

package org.learningconcurrency

package ch2

因为本书主要介绍并发和异步操作,所以许多示例程序都会含有主线程停止运行后仍继续运行的并发计算。为了确保这些并发计算操作能够执行完毕,我们会使用运行SBT 的JVM 实例中运行的大多数示例程序。因而向build.sbt 文件添加了下面的代码:

fork := false

在介绍需要在独立JVM 进程中运行的示例程序时,我们会做明确说明并列出详细的处理步骤。

使用Eclipse、IntelliJ IDEA 等IDE

使用Eclipse 或IntelliJ IDEA 等集成开发环境(IDE)的好处,是能够通过自动方式编写、编译和运行Scala 程序。这样就无须安装上一节介绍的SBT。你可以使用SBT 运行示例程序,也可以使用IDE 运行示例程序。

在使用IDE 运行本书的示例程序时有一点需要特别注意:Eclipse 和IntelliJ IDEA 之类的编辑器会在独立的JVM 进程中运行程序。如上一节所述,某些并发计算会在主线程停止后继续运行。为了确保这些计算操作能够执行完毕,有时需要在主执行流程的末尾添加sleep 语句,该语句会降低主线程的执行速度。本书的大多数示例程序已经添加sleep 语句,但某些示例程序需要你亲自添加该语句。

本书面向的读者

本书主要面向已经掌握Scala 顺序编程技术的开发者,以帮助这些开发者掌握编写正确并发程序的技术。本书假定你已经掌握了Scala 编程语言的基础知识。贯穿本书始终,我们都努力使用简单的Scala 功能,展示编写并发程序的方式。只要你具备Scala 的基础知识,了解各种并发主题就不会有困难。这并不意味着本书仅限于供Scala 开发者阅读。不论你拥有Java 或.NET 专业背景,或者仅是一名编程语言爱好者,都能够从本书介绍的内容中获得启迪。对面向对象和函数式编程有基本的了解,也是阅读本书的先决条件。

本书还从更广阔的视角,对现代并发编程技术做了详细介绍。即使你已经掌握了多线程计算或JVM 并发模型的基础知识,通过本书你也可以了解许多现代的高级并发实用组件。本书介绍的许多并发库仅处于进入主流编程语言的起步阶段,其中一部分是真正的尖端技术。

约定

本书使用多种字体区分多种信息。下面介绍这些字体和它们的含义。文本中的代码、数据库中表的名称、文件夹名称、文件名、文件扩展名、路径名称、URL 示例、用户输入信息和Twitter 账号使用下列字体:“然后,它会调用square 方法计算局部变量s 的值。”

代码块使用下面的字体:

object SquareOf5 extends App {

def square(x: Int): Int = x * x

val s = square(5)

println(s"Result: $s")

}

命令行界面中的输入信息和输出结果使用下列字体:

run-main-46: ...

Thread-80: New thread running.

run-main-46: ...

run-main-46: New thread joined.

新术语和重点词汇使用粗体。屏幕显示的信息、菜单和对话框中的内容使用下列字体:“单击Thread Dump 按钮后,Java VisualVM 会显示所有线程的堆栈跟踪信息,如下图所示:

下载示例程序的代码

你可以从https://www.broadview.com.cn 的“下载专区”,下载所有已购买的博文视点书籍的示例代码文件。

勘误表

尽管我们努力提高书籍的质量,但错误在所难免。如果你发现了我们书籍中的错误(不论是文字错误还是代码错误),请不吝指正。通过指出书中的错误,你不仅能够帮助其他读者,并且可以帮助我们提高后续版本的质量。如果你发现了错误,可以在博文视点网站相应图书的页面提交勘误信息。一旦你找到的错误被证实,你提交的信息就会被接受,我们的网站也会发布这些勘误信息。你可以随时浏览图书页面,查看已经发布的勘误信息。

Specifications

Brand Jingdong book
Brand Origin China

Disclaimer

Product packaging, specifications and price are subject to change without notice. All information about the products on our website is provided for information purposes only. Please always read labels, warnings and directions provided with the product before use.

View Full Terms of Use
Add to favorites
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}
{{__("Buy Directly")}} {{ itemCurrency }}{{ item.directly_price }}
Quantity
{{ quantity }}
{{ instockMsg }}
{{ limitText }}
{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}
Sold by JD@CHINA
Ship to
{{ __("Ship to United States only") }}
Free shipping over 69
Genuine guarantee

Added to Cart

Keep Shopping

More to Consider

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

Coupons

{{ coupon.coupon_name_new | formatCurrency }}
Clip Clipped Over
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
Expires soon {{ formatTime(coupon.use_end_time) }}

Share this item with friends

Cancel

Yami Gift Card

Get this exclusive deal when paying with gift card

Terms and Conditions

Gift card deals are special offers for selected products;

The gift card deals will automatically be activated if a customer uses gift card balance at check out and the balance is sufficient to pay for the total price of the shopping cart products with gift card deals;

You will not be able to activate the gift card deals if you choose other payment methods besides gift card. The products will be purchased at their normal prices;

If your account balance is not enough to pay for the products with gift card deals, you can choose to reload your gift card balance by clicking on the Reload button at either shopping cart page or check out page;

Products that have gift card deals can be recognized by a special symbol showing 'GC Deal';

For any additional questions or concerns, please contact our customer service;

Yamibuy reserves the right of final interpretation.

Sold by Yami

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

Yami is committed to provide our customers with a peace of mind when purchasing from us. Most items shipped from Yamibuy.com can be returned within 30 days of receipt of shipment (For Food, Beverages, Snacks, Dry Goods, Health supplements, Fresh Grocery and Perishables Goods, within 7 days of receipt of shipment due to damages or quality issues; To ensure that every customer receives safe and high-quality products, we do not provide refunds or returns for beauty products once they have been opened or used, except in the case of quality issues; Some products may have different policies or requirements associated with them, please see below for products under special categories, or contact Yami Customer Service for further assistance).
Thank you for your understanding and support.

Learn More

Sold by Yami

Terms and Conditions of Yami E-Gift Card

If you choose “Redeem automatically” as your delivery method, your gift card balance will be reload automatically after your order has been processed successfully;

If you choose “Send to Email”as your delivery method, the card number and CVV will be sent to the email address automatically;

Any user can use the card number and CVV to redeem the gift card, please keep your gift card information safely. If you have any trouble receiving email, please contact Yami customer service;

Yami gift card can be used to purchase both Yami owned or Marketplace products;

Yami gift card will never expire;

Yami gift card balance does not have to be used up at once;

All rights reserved by Yami.

Return Policy

Gift card that has already been consumed is non-refundable.

Sold by JD@CHINA

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Sold by JD@CHINA

Service Guarantee

Yami Cross-store Free Shipping over $69
Yami 30-days Return

Yami-China FC

Yami has a consolidation warehouse in China which collects multiple sellers’ packages and combines to one order. Our Yami consolidation warehouse will directly ship the packages to your door. Cross-store free shipping over $69.

Return Policy

You may return products within 30 days upon receiving the products. Sellers take responsibilities for any wrong shipment or missing items. Packing needs to be unopened for any other than quality issues return. We promise to pack carefully, but because goods are taking long journey to destinations, simple damages to packaging may occur. Any damages not causing internal goods quality problems are not allowed to return. If you open the package and any quality problem is found, please contact customer service within three days after receipt of goods.

Shipping Information

Yami Consolidation Service Shipping Fee $9.99(Free shipping over $69)

Sellers in China will ship their orders within 1-2 business days once the order is placed. Packages are sent to our consolidation warehouse in China and combined there. Our Yami consolidation warehouse will directly ship the packages to you via UPS. The average time for UPS to ship from China to the United States is about 10 working days and it can be traced using the tracking number. Due to the pandemic, the delivery time may be delayed by about 5 days. The package needs to be signed by the guest. If the receipt is not signed, the customer shall bear the risk of loss of the package.

Sold by JD@CHINA

Service Guarantee

Free shipping over 69
Genuine guarantee

Shipping

Yami Consolidated Shipping $9.99(Free shipping over $69)


Seller will ship the orders within 1-2 business days. The logistics time limit is expected to be 7-15 working days. In case of customs clearance, the delivery time will be extended by 3-7 days. The final receipt date is subject to the information of the postal company.

Yami Points information

All items are excluding from any promotion or points events on Yamibuy.com

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Yami

Download the Yami App

Back Top

Recommended for You

About the brand

Jingdong book

为您推荐

Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折

Reviews{{'('+ commentList.posts_count + ')'}}

Have your say. Be the first to help other guests.

Write a review
{{ totalRating }} Write a review
  • {{i}} star

    {{i}} stars

    {{ parseInt(commentRatingList[i]) }}%

Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}
Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}

No related comment~

Review

Yami Yami

{{ showTranslate(commentDetails) }}Show Less

{{ strLimit(commentDetails,800) }}Show more

Show Original

{{ commentDetails.content }}

Yami
Show All

{{ formatTime(commentDetails.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{commentDetails.in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Comments{{'(' + replyList.length + ')'}}

Yami Yami

{{ showTranslate(reply) }}Show Less

{{ strLimit(reply,800) }}Show more

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{reply.reply_in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Cancel

That’s all the comments so far!

Write a review
How would you rate this item?

Please add your comment.

  • A nice nickname will make your comments more popular!
  • The nickname in your account will be changed to the same as here.
Thanks for your review
Our community rely on great reviews like yours to find the best of Asia.

Report

If you find this content inappropriate and think it should be removed from the Yami.com site, let us know please.

Cancel

Are you sure to delete your review?

Cancel

You’ve Recently Viewed

About the brand

Jingdong book