【Scala笔记——问】Scala Future思考题几则

Scala Future思考题几则

最近想到的几个问题,罗列在此.如果有答案的小伙伴,欢迎私信留言~~

operate为一个普通函数,1-5题判断以下各种实现是否并发执行,为什么?

1

	for {
		a <- Future(operateA(...))
		b <- Future(operateB(...))
	} yield (...) 

2

val a = Future(operateA(...))
val b = Future(operateB(...))

	for {
		va <- a
		vb <- b
	} yield (...) 

3

lazy val a = Future(operateA(...))
lazy val b = Future(operateB(...))

	for {
		va <- a
		vb <- b
	} yield (...) 

4

val a = operatF
val b = operatF

	for {
		va <- a
		vb <- b
	} yield (...) 


def operatF = Future(operateA())

5

val a = operatF(1)
val b = operatF(1)

	for {
		va <- a
		vb <- b
	} yield (...) 


def operatF(a: Int) = Future(operateA(a))

7

val a = Future(operateA(...))
val b = Future(operateB(...))
val c = Future(b)

Future(
	for {
		va <- a
		vb <- b
		vc <- c
	} yield (...) 
)


8 是否会报异常,为什么?

        val f1 = Future{
            Thread.sleep(3000)
            true
        }
        val f2 = Future{
            Thread.sleep(3000)
            true
        }
        val f3 = Future{
            Thread.sleep(100)
            true
        }


        val f4 = Future.sequence(Seq(f1, f2, f3))


        val re = Await.result(f4, 1300 milliseconds)

		operate(re)

9 该操作是否可行,为什么?

        val f1 = Future(operateA)

        val f2 = Future(operateB)

        val f3 = Future{Thead sleep 1000)
    
         val re = Try(Await.result(Future.sequence(List(f1, f3)), 100 milliseconds))

        re match {
            case Success(s) => ...
            case Failure(e) => operateC(f1)
        }

        println(re)

10 如何实现无锁Future超时限制

11 如何实现具有前提的Future序列

  1. task 1 需要在 10 ms内完成
  2. 若task1 在时限内完成则进入 4.
  3. 若task1 未在时限内完成则Future.failure(TimeoutException)
  4. task 2 需要在task1完成后 20 ms内完成
  5. task3 需要在总时间50ms内完成

12 无锁三个线程打印 1 -> 100

13 用多线程模拟十个人赛跑,记录前三名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值