Futureは新しいスレッドを取得しますか?

ジョナ

以下のように実装された将来は新しいスレッドを取得しますか?明らかにそうではありません(以下の出力を参照)。どうして?コードを新しいスレッドで実行したい場合はどうすればよいですか?

package MyTest

import com.twitter.util._

import scala.language.postfixOps

object Test {

  def test1 = Future {
    println("BeforeTest", Thread.currentThread())
    Thread.sleep(5000)
    println("AfterTest", Thread.currentThread())
  }

  def test2 = test1 onSuccess { case _ => println("Future on success") }

  def main(args: Array[String]): Unit = {

    println("main", Thread.currentThread())
    test2
    println("main123", Thread.currentThread())
  }
}

出力:

(main、Thread [run-main-0,5、run-main-group-0])

(BeforeTest、Thread [run-main-0,5、run-main-group-0])

(AfterTest、Thread [run-main-0,5、run-main-group-0])

成功の未来

(main123、Thread [run-main-0,5、run-main-group-0])

ジョバンニカポラレッティ

Scala先物ではなく、Twitter先物を使用しています。Twitterの先物は、デフォルトではマルチスレッド化されていません。FuturePoolを使用する必要があります(選択しスレッドプールでExecutorServiceを渡します)

テストされていない例(動作するのに十分単純です:)):

val executor = Executors.newFixedThreadPool(4)
val pool = FuturePool(executor)

def test1 = pool { 
  println("BeforeTest", Thread.currentThread())
  Thread.sleep(5000)
  println("AfterTest", Thread.currentThread())
}

def test2 = test1 onSuccess { case _ => println("Future on success") }

def main(args: Array[String]): Unit = {

  println("main", Thread.currentThread())
  test2
  println("main123", Thread.currentThread())

  executor.shutdown()
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Stream.parallel()は新しいスレッドを使用しますか?

分類Dev

ScheduledExecutorServiceは必要に応じて新しいスレッドを作成しますか?

分類Dev

handler.post(runnable)は新しいスレッドを開始しますか?

分類Dev

シグナルは新しいスレッドを作成しますか?

分類Dev

onCreate()の新しいスレッド情報を取得し、スレッドセーフを維持するにはどうすればよいですか?

分類Dev

新しいIPアドレスを取得できますか?それは合法ですか?

分類Dev

新しいシンプロセス、フォーク、またはスレッドを作成しますか?

分類Dev

新しいスレッドをインスタンス化する方法に違いはありますか?

分類Dev

App Engineスケジューラは、新しいインスタンスではなく新しいスレッドをいつ使用しますか?

分類Dev

RxJava2は新しいスレッドでリストを作成します

分類Dev

GlobalScope.launchは新しいスレッドを作成しますか、それとも同じスレッドで実行しますか?

分類Dev

スレッドを中止してから、新しい変数で再度開く方法はありますか?

分類Dev

NodeJSはリクエストごとに新しいスレッドを作成しますか?

分類Dev

Javaスレッド:start()-どのようにして新しいスレッドを作成しますか?

分類Dev

Task.Run(Action)は新しいスレッドIDを開始しますか?ThreadPoolにスレッドはもうありませんか?

分類Dev

iOSのGCDは常に新しいスレッドを作成します

分類Dev

Googleの新しいスプレッドシートはJSONを返します

分類Dev

C ++の新しいスレッドはメインスレッドをスリープします

分類Dev

C#新しいスレッドまたはタスクでフォームを開きますか?

分類Dev

1つのスレッドのFutureを待機している間、スレッドの実行は続行されますか

分類Dev

java-> System.gc(); この呼び出しは新しいスレッドを開きますか?

分類Dev

Javaで新しいスレッドを作成する方法はいくつありますか?

分類Dev

メインスレッドは、いくつかのスレッドのstart()メソッドを呼び出した直後に制御を取得しますか?

分類Dev

BackgroundServiceは常に新しいスレッドで実行されますか

分類Dev

haxelib runは新しいスレッドを開始できませんか?

分類Dev

新しいRunnable()ですが、新しいスレッドはありませんか?

分類Dev

新しいスレッドでメソッドを呼び出します(文字列からメソッド名)?

分類Dev

Googleスプレッドシートで新しい算術関数を作成する方法はありますか?

分類Dev

Javaスレッドはすでに保持しているロックを取得できますか?

Related 関連記事

  1. 1

    Stream.parallel()は新しいスレッドを使用しますか?

  2. 2

    ScheduledExecutorServiceは必要に応じて新しいスレッドを作成しますか?

  3. 3

    handler.post(runnable)は新しいスレッドを開始しますか?

  4. 4

    シグナルは新しいスレッドを作成しますか?

  5. 5

    onCreate()の新しいスレッド情報を取得し、スレッドセーフを維持するにはどうすればよいですか?

  6. 6

    新しいIPアドレスを取得できますか?それは合法ですか?

  7. 7

    新しいシンプロセス、フォーク、またはスレッドを作成しますか?

  8. 8

    新しいスレッドをインスタンス化する方法に違いはありますか?

  9. 9

    App Engineスケジューラは、新しいインスタンスではなく新しいスレッドをいつ使用しますか?

  10. 10

    RxJava2は新しいスレッドでリストを作成します

  11. 11

    GlobalScope.launchは新しいスレッドを作成しますか、それとも同じスレッドで実行しますか?

  12. 12

    スレッドを中止してから、新しい変数で再度開く方法はありますか?

  13. 13

    NodeJSはリクエストごとに新しいスレッドを作成しますか?

  14. 14

    Javaスレッド:start()-どのようにして新しいスレッドを作成しますか?

  15. 15

    Task.Run(Action)は新しいスレッドIDを開始しますか?ThreadPoolにスレッドはもうありませんか?

  16. 16

    iOSのGCDは常に新しいスレッドを作成します

  17. 17

    Googleの新しいスプレッドシートはJSONを返します

  18. 18

    C ++の新しいスレッドはメインスレッドをスリープします

  19. 19

    C#新しいスレッドまたはタスクでフォームを開きますか?

  20. 20

    1つのスレッドのFutureを待機している間、スレッドの実行は続行されますか

  21. 21

    java-> System.gc(); この呼び出しは新しいスレッドを開きますか?

  22. 22

    Javaで新しいスレッドを作成する方法はいくつありますか?

  23. 23

    メインスレッドは、いくつかのスレッドのstart()メソッドを呼び出した直後に制御を取得しますか?

  24. 24

    BackgroundServiceは常に新しいスレッドで実行されますか

  25. 25

    haxelib runは新しいスレッドを開始できませんか?

  26. 26

    新しいRunnable()ですが、新しいスレッドはありませんか?

  27. 27

    新しいスレッドでメソッドを呼び出します(文字列からメソッド名)?

  28. 28

    Googleスプレッドシートで新しい算術関数を作成する方法はありますか?

  29. 29

    Javaスレッドはすでに保持しているロックを取得できますか?

ホットタグ

アーカイブ