标签: callable

使用线程

我有以下任务:

  1. 从网上下载图片
  2. 使用它创建另一个图像
  3. 将图像保存到SD卡并显示

我需要在另一个线程中执行每一步.看来,当我完成加载图像时,我需要将其转移到第二个线程中.

经过一些谷歌搜索后,我意识到我需要为每个线程实现Callable接口,而不是将它与ExecutorService一起使用.问题是我不明白如何传递数据,例如,从第一个线程传递到第二个线程.

任何人都可以展示一个简单的例子吗?谢谢

java multithreading android callable

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

如何让Callable等到执行?

我有一个Callable,我调用了它

FutureTask<Integer> task = new FutureTask<Integer>(new MyCallable(name, type));
pool = Executors.newSingleThreadExecutor();
pool.submit(task);
Run Code Online (Sandbox Code Playgroud)

我想知道执行是继续执行pool.submit(task)还是等待可调用来完成执行?

总之我只是想知道有没有像thread.join()Callable 这样的方法?

java multithreading callable task

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

Java jsoup使用线程无法正常工作

我喜欢这样的页面:

www.foo1.bar
www.foo2.bar
www.foo3.bar
.
.
www.foo100.bar
Run Code Online (Sandbox Code Playgroud)

我正在使用库jsoup并使用Thread同时连接到每个页面:

Thread matchThread = new Thread(task);
matchThread.start();
Run Code Online (Sandbox Code Playgroud)

每个任务,连接到这样的页面,并解析HTML:

Jsoup.connect("www.fooX.bar").timeout(0).get();
Run Code Online (Sandbox Code Playgroud)

获得大量的这些例外:

java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at sun.net.NetworkClient.doConnect(NetworkClient.java:158)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:388)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:523)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:227)
at sun.net.www.http.HttpClient.New(HttpClient.java:300)
at sun.net.www.http.HttpClient.New(HttpClient.java:317)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:404)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:391)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:157)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:146)
Run Code Online (Sandbox Code Playgroud)

jsoup是否只允许同时使用1个线程?或者我做错了什么?有关如何更快地连接到我的页面的任何建议,因为逐个进行需要很长时间.

编辑:

所有700个线程都使用这种方法,也许这就是问题所在.这个方法可以处理这个数量的线程还是单例?

private static Document connect(String url) {
    Document doc = null;
    try {
        doc = Jsoup.connect(url).timeout(0).get(); …
Run Code Online (Sandbox Code Playgroud)

java multithreading callable runnable jsoup

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

在Callable and Future接口中使用泛型?

Callable接口中泛型有什么用?

考虑一下我从https://blogs.oracle.com/CoreJavaTechTips/entry/get_netbeans_6复制的以下代码:

import java.util.\*;
import java.util.concurrent.\*;

public class CallableExample {

  public static class WordLengthCallable
        implements Callable {
    private String word;
    public WordLengthCallable(String word) {
      this.word = word;
    }
    public Integer call() {
      return Integer.valueOf(word.length());
    }
  }

  public static void main(String args[]) throws Exception {
    ExecutorService pool = Executors.newFixedThreadPool(3);
    Set<Future<Integer>> set = new HashSet<Future<Integer>>();
    for (String word: args) {
      Callable<Integer> callable = new WordLengthCallable(word);
      Future<Integer> future = pool.submit(callable);
      set.add(future);
    }
    int sum = 0;
    for (Future<Integer> future : set) …
Run Code Online (Sandbox Code Playgroud)

java generics concurrency multithreading callable

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

为什么在带有块的 Python 中不可调用可调用?

关于为什么在 Python 3.5with语句中不可调用的可调用对象的任何押韵或原因?

class Seriously(object):
    def __init__(self, name):
        self.name = name

    def __enter__(self):
        print("Enter " + self.name)

    def __call__(self):
        print("Call " + self.name)

    def __exit__(self, type, value, traceback):
        print("Exit " + self.name)

a = Seriously('a')
a.__enter__()
a()
a.__enter__()

with Seriously('b') as b:
    b()
Run Code Online (Sandbox Code Playgroud)

严重产生

Enter a
Call a
Enter a
Enter b
Exit b
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-91a5d11e1b2e> in <module>()
     18 
     19 with Seriously('b') as b:
---> 20     b()

TypeError: 'NoneType' object is not …
Run Code Online (Sandbox Code Playgroud)

python callable with-statement

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

(TypeError:'float'对象不可调用)进行数学运算时

我正在编写一个代码来计算电子的所有能级,因为它在玻尔模型中跳跃到不同的轨道水平.我写了一些数学,但是当我尝试运行它时会说TypeError:'float'对象不可调用.我需要做什么?

这是我的代码:

loopone = True
if (work == Element_symbols[0]):
energy = ((charge[0]*(0-13.6))/1)
print ('This is the energy level for the electron at the N=1 state.')
print (energy)
print ('These are all of the possible energies from the n=6 level')
nrgone = (-13.6((1/(5*5)-(1/(6*6)))))
nrgtwo = (-13.6((1/(4*4)-(1/(6*6)))))
nrgthree = (-13.6((1/(3*3)-(1/(6*6)))))
nrgfour = (-13.6((1/(2*2)-(1/(6*6)))))
nrgfive = (-13.6((1/(1*1)-(1/(6*6)))))
Energies = (nrgone, nrgtwo, nrgthree, nrgfour, nrgfive)
print (Energies)
loopone = False
Run Code Online (Sandbox Code Playgroud)

python callable

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

从 Callable 类调用常用方法的最佳方法?

我使用 Callable 类型的 java 类(最多并行 200 个),它调用工具类的方法(集中公共方法),并且我注意到如果该方法不“同步”,我会收到错误。我尝试将此方法移至 Callable 类,但问题仍然存在。

使用“同步”,它可以工作,但我担心这种设置会降低性能,因为并行启动的任务不能完全独立,并且会相互减慢,而不是以最大速度运行。

实现这一点的最佳方法是什么?

下面(简化)摘自我的代码。如果没有“同步”,只要数据比较不处理日期,似乎就不会出现错误。但是,如果该方法比较日期(实际上,更准确地说,是 java.util.Date 和 Timestamp 的混合,我将其转换为日期,然后转换为字符串),则会出现错误。但该方法工作正常,因为一旦我切换到同步,就没有错误......

public class CompareTableTF {
...
    public void compareTable(...) {
    ...
        while (...) {
        try {
            myTask = new CompareTableTask(...);
            completion.submit(myTask);
        }
        catch (InterruptedException | ExecutionException e) {...}
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)
public class CompareTableTask implements Callable<Integer> {
    private List<Object> row1;

    public CompareTableTask(List<Object> row1) { 
        this.row1=row1;
    }

    @Override
    public Integer call() {
        int result=1;
        List<Object> row2=getRowToCompare(...);
        if (isEqual(row2)) {
            result=0;
        }
        return result;
    }

    private boolean …
Run Code Online (Sandbox Code Playgroud)

java timestamp date callable synchronized

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