相关疑难解决方法(0)

什么是Java中的守护程序线程?

任何人都能告诉我Java中的守护程序线程是什么吗?

java multithreading

770
推荐指数
15
解决办法
45万
查看次数

如何在多线程环境中更好地使用ExecutorService?

我需要创建一个库,在其中我将有同步和异步方法.

  • executeSynchronous() - 等到我有结果,返回结果.
  • executeAsynchronous() - 立即返回Future,如果需要,可在其他事情完成后处理.

我的图书馆的核心逻辑

客户将使用我们的库,他们将通过传递DataKey构建器对象来调用它.然后我们将使用该DataKey对象构造一个URL,并通过执行它来对该URL进行HTTP客户端调用,然后在我们将响应作为JSON字符串返回之后,我们将通过创建DataResponse对象将该JSON字符串发送回我们的客户.有些客户会打电话executeSynchronous(),有些人可能会打电话executeAsynchronous(),这就是为什么我需要在我的库中单独提供两种方法.

接口:

public interface Client {

    // for synchronous
    public DataResponse executeSynchronous(DataKey key);

    // for asynchronous
    public Future<DataResponse> executeAsynchronous(DataKey key);
}
Run Code Online (Sandbox Code Playgroud)

然后我有我DataClient实现上面的Client接口:

public class DataClient implements Client {

    private RestTemplate restTemplate = new RestTemplate();
    // do I need to have all threads as non-daemon or I can have daemon thread for my use case?
    private ExecutorService executor = …
Run Code Online (Sandbox Code Playgroud)

java multithreading daemon callable executorservice

10
推荐指数
2
解决办法
1280
查看次数

为什么这个简单的Akka Streams程序永远不会终止?

应该是一个简单的问题.我正在使用Akka 2.4.2(包含Akka Streams和HTTP).我希望这个Source完成&程序终止,因为它Source是有限的,但它永远不会.为什么这个程序不会终止?

import scala.concurrent._
import scala.collection.immutable._
import akka._
import akka.actor._
import akka.stream._
import akka.stream.scaladsl._
import akka.util._

object Test extends App {

  implicit val system = ActorSystem("TestSystem")
  implicit val materializer = ActorMaterializer()

  val s = Source.single(1)
  s.runForeach(println)
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ sbt run
...
[info] Running Test
[DEBUG] [02/23/2016 10:59:19.904] [run-main-0] [EventStream(akka://TestSystem)] logger log1-Logging$DefaultLogger started
[DEBUG] [02/23/2016 10:59:19.904] [run-main-0] [EventStream(akka://TestSystem)] Default Loggers started
1
Run Code Online (Sandbox Code Playgroud)

我build.sbt文件的相关部分:

scalaVersion  := "2.11.7"

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

libraryDependencies …
Run Code Online (Sandbox Code Playgroud)

akka-stream

9
推荐指数
1
解决办法
1722
查看次数

守护程序线程和低优先级线程之间的区别

最近我被问到一个问题:

我们有了setPriority()设置低优先级线程的方法.那为什么我们需要一个守护程序线程.他们之间有什么区别?

将线程标记为守护进程是否会更改其调度?

java multithreading

8
推荐指数
1
解决办法
4904
查看次数