【问题标题】:How can i use multithreading?如何使用多线程?
【发布时间】:2014-03-29 06:36:14
【问题描述】:

你能帮我multithreading吗,例如我怎样才能让这个方法在两个线程中工作。

/**
     * returns 16 bytes
     */
    private byte[] keyStream() {
        nextState();
        final byte[] s = new byte[16];
        /* unroll */
        int x = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
        s[0] = (byte) (x >>> 24);
        s[1] = (byte) (x >> 16);
        s[2] = (byte) (x >> 8);
        s[3] = (byte) x;
        x = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
        s[4] = (byte) (x >>> 24);
        s[5] = (byte) (x >> 16);
        s[6] = (byte) (x >> 8);
        s[7] = (byte) x;
        x = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
        s[8] = (byte) (x >>> 24);
        s[9] = (byte) (x >> 16);
        s[10] = (byte) (x >> 8);
        s[11] = (byte) x;
        x = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
        s[12] = (byte) (x >>> 24);
        s[13] = (byte) (x >> 16);
        s[14] = (byte) (x >> 8);
        s[15] = (byte) x;
        return s;
    }

【问题讨论】:

  • 对于 Java 或 c# 是具体的?
  • 为什么要多线程?
  • @JunaidHassan:有final,所以java
  • 如果你使用多个线程,它会更慢更复杂。你不关心这些吗?
  • 我假设您知道代码示例中存在一些重大错误。

标签: java multithreading


【解决方案1】:

您可以简单地创建一个类,实现Runnable 并覆盖run 函数,如下所示:

class MyRunnable implements Runnable{
    public void run(){
        byte[] retVal = keyStream();
    }
    /**
     * returns 16 bytes
     */
    private byte[] keyStream() {
        // function implementation
    }
}

而且你可以通过一些方式来使用它,比如这样:

Thread myThread1= new Thread(new MyRunnable());
Thread myThread2= new Thread(new MyRunnable());
myThread1.start();
myThread2.start();

【讨论】:

  • 永远不要扩展Thread,而是实现Runnable。然后可以将它们传递给线程、执行器服务或其他任何东西。
  • 所以你可以选择我的答案作为正确答案:) @Yusra
  • 你好@saeed 非常感谢你的帮助。但是您能否向我解释一下,因为我是多线程的新手,但我知道一些基础知识,例如:实现 Runnable 接口,然后覆盖 run 方法,然后从类中创建一个实例,然后将其传递给线程构造函数,最后我们可以调用方法线程类但我的问题是我在运行方法中做了什么,因为我有比这个更多的方法
  • 所以添加更多细节。你的问题不够详细
猜你喜欢
  • 2018-09-01
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多