相关疑难解决方法(0)

Java中的单线程异步处理

我对Java线程有疑问。当我仅使用主线程时,可以异步运行两个任务吗?我读了这篇文章:异步与同步执行,这实际上意味着什么? 第二个答案是可能的情况,其中只有一个线程(而不是主线程和另一个线程)并且任务被异步执行。我认为这在Java中是不可能的,因为仅存在一个控制流。我认为在Java中,每个任务都需要自己的线程来异步执行任务。

java asynchronous

4
推荐指数
1
解决办法
1948
查看次数

改造同步和异步请求有什么区别?哪个更好,为什么?

我真的在每个地方搜索过这个,我可以做同步和异步数据请求,但我实际上无法理解哪个是异步的?什么与什么同步?

rest android retrofit

3
推荐指数
2
解决办法
1万
查看次数

如何在主线程上的 onCreate/ 中获取房间列表的大小?

如何轻松获得数据库大小的计数,以便我可以根据数据库是否为空执行适当的操作?

我有一个 App DB、视图模型、存储库、Dao 和所有其他部分,并且我的对象插入......但我无法调用onCreate()数据库中列表的大小。当我尝试获取mAppDatabase.vehicleDao().getAll().getValue().size(), 或 时mVehicleViewModel.getAll().getValue().size(),我得到空指针异常。

但是我知道我的对象正在插入,因为当我运行一个 observable 时,我可以记录它们的信息......但我无法在主线程/onCreate 中获得计数。帮助!示例代码如下:

protected void onCreate(Bundle savedInstanceState) {
...
mAppDatabase = AppDatabase.getInstance(MyActivity.this);
Log.d("LISTSIZEAPP", String.valueOf(mAppDatabase.myDao().getAll().getValue().size()));
ObserveItems();
Run Code Online (Sandbox Code Playgroud)

或者

protected void onCreate(Bundle savedInstanceState) {
...
mViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
Log.d("LISTSIZEVM",  String.valueOf(mViewModel.getAll().getValue().size()));
ObserveItems();
Run Code Online (Sandbox Code Playgroud)

^ 两者的空指针异常(尝试在空对象引用上调用接口方法 'java.lang.Object[] java.util.List.toArray()')...

然而:

private void ObserveItems() {
    mViewModel.getAll().observe(this, new Observer<List<Foo>>() {
        @Override
        public void onChanged(@Nullable final List<Foo> foos) {
            mFoos= foos;
            for (Vehicle v: mFoos) {
                Log.d("ROOM INFO - FOOS", v.getFooTitle());
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我可以记录我想要的所有信息。所以这些项目是明确插入的。是什么赋予了?我错过了什么?谢谢你。

java android android-room android-architecture-components android-jetpack

3
推荐指数
1
解决办法
6139
查看次数

Java 8:如何将for循环转换为并行运行?

for (int i=0; i<100000; i++) {
    // REST API request. 
restTemplate.exchange(url, HttpMethod.GET, request, String.class);
}
Run Code Online (Sandbox Code Playgroud)

我有一种情况,我必须为10万用户请求一个资源,它需要70分钟才能完成.我试图尽可能地清理我的代码,我只能将它减少4分钟).

由于每个请求彼此独立,我很乐意并行发送请求(可能是10s,100s甚至1000s的块,每次快速完成).我希望我能把时间减少到10分钟或者接近的时间.如何计算哪个块大小可以快速完成工作?

我找到了以下方法,但我不知道该程序是否一次处理所有20个; 或一次5个; 或者一次10个.

IntStream.range(0,20).parallel().forEach(i->{
     ... do something here
});
Run Code Online (Sandbox Code Playgroud)

我知道你的帮助.我对任何建议或评论都持开放态度!

更新:我能够使用IntStream,并在28分钟内完成任务.但我不确定这是我能做的最好的.

java parallel-processing concurrency java.util.concurrent java-8

2
推荐指数
1
解决办法
6346
查看次数

如何使用翻新功能拨打多个电话?

我需要使用Retrofit多次调用API REST,并在中显示响应ListView,但我不知道该怎么做,因此此代码不起作用。

模型

@GET("apks/{sha256}")
    Call<DatoAPI> getTask2(@Path("sha256") String hash, @Query("Authorization") String key);
Run Code Online (Sandbox Code Playgroud)

实作

for (String s: hash) {                                          
    Call<DatoAPI> call = services.getTask2(s, API.API_KEY);
    call.enqueue(new Callback<DatoAPI>() {
        @Override
        public void onResponse(Call<DatoAPI> call, Response<DatoAPI> response) {
            if (response.isSuccessful()) {
                datoAPI = response.body();
                items.add(datoAPI.getApp());
            }
        }

        @Override
        public void onFailure(Call<DatoAPI> call, Throwable t) {
            Toast.makeText(getApplicationContext(),t.getMessage(),Toast.LENGTH_LONG).show();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过call.execute()和同样的问题,我想在显示此响应,ListView但它不起作用。

android retrofit2

2
推荐指数
1
解决办法
3405
查看次数

如何根据“fetch”结果创建“li”

我试图通过参考https://dog.ceo/dog-api/documentation/上的文档从该网站提取一些数据

我正在尝试检索狗品种列表并创建一个列表。我正在使用 javaScript 的“fetch”

let dog_list = [];
fetch('https://dog.ceo/api/breeds/list/all')
  .then(response => {
    if (response.ok) {
      return response.json();
    } else {
      throw new Error(response.statusText);
    }
  })
  .then(data => dog_list = data.message)
const container = document.getElementById("container");
for (dog in dog_list) {
  let li = document.createElement("li");
  let node = document.createTextNode(dog);
  li.appendChild(node);
  container.appendChild(li);
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html lang="en">

<head>
  <title>Dog Breed List</title>
</head>

<body>
  <ul id="container"></ul>
  <script src="dog_breed.js"></script>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

我在第二个“then”遇到问题,我不知道如何将 json 对象转换为数组并将其显示为

  • 狗1
  • 狗2
  • 狗3

javascript

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

Swift Closures问题

我在从闭包中检索数据时遇到问题.我正在调用函数getWallImages,它应该返回一个数组.我可以从闭包内打印数组的内容,但在它之外,数组是空的.

import Foundation
import Parse

class WallPostQuery {

    var result = [WallPost]()

    func getWallImages() -> [WallPost] { 
        let query = WallPost.query()!

        query.findObjectsInBackgroundWithBlock { objects, error in    
            if error == nil {     
                if let objects = objects as? [WallPost] {
                    self.result = objects
                    //This line will print the three PFObjects I have
                    println(self.result)
                }
            }
        }

        //this line prints [] ...empty array?
        println(result)
        return self.result
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从闭包中获取值?

closures parse-platform swift

0
推荐指数
1
解决办法
130
查看次数

为什么setTimeout 0没有在函数结束时执行

我是Javascript的新手,最近知道setTimeout设置为0 millis的用法.我正在尝试实现它,但没有得到预期的结果.根据我的知识,它必须等到所有事件都完成但它没有表现得很好.请告诉我我错过了什么或我错在哪里.

的index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test HTML</title>

</head>
<body>

    <script src="js/index.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

index.js

(function(){

    setTimeout(function () {
        document.write("<p>Event 0 Processed !!</p>");
    },0);

    setTimeout(function () {
        document.write("<p>Event 1 Processed !!</p>");
    },1000);

    setTimeout(function () {
        document.write("<p>Event 2 Processed !!</p>");
    },2000);

    setTimeout(function () {
        document.write("<p>Event 3 Processed !!</p>");
    },3000);

})();
Run Code Online (Sandbox Code Playgroud)

产量

Event 0 Processed !!

Event 1 Processed !!

Event 2 Processed !!

Event 3 Processed !!
Run Code Online (Sandbox Code Playgroud)

我期待着类似的东西

Event 1 Processed !!

Event 2 Processed !!

Event …
Run Code Online (Sandbox Code Playgroud)

javascript

0
推荐指数
1
解决办法
279
查看次数

Android中的同步和异步是什么?

我想知道“同步”和“异步”一词的定义和含义。任何人都可以向我解释这些主题,我将非常感激。

android

-1
推荐指数
1
解决办法
4170
查看次数

synchronus和asynchronus方法之间的区别是什么?

synchronus和asynchronus方法之间的区别是什么?

我从codeverge找到了这个q/a

当你调用一个同步方法时,它会完成工作,然后返回结果(成功,失败,可能没有返回任何内容).

当你调用异步方法时,它立即返回(你的程序可以顺利进行).完成工作后,它将调用您提供的功能.这些工作与程序运行并行完成.

但真的无法理解.

有人对此有明确的概念吗?

javascript

-2
推荐指数
1
解决办法
1378
查看次数