当前位置:  开发笔记 > 编程语言 > 正文

在多核场景中编写java程序的技巧

如何解决《在多核场景中编写java程序的技巧》经验,为你挑选了3个好方法。

关于多核和java似乎有很多大惊小怪.虽然有些人说java支持不够好,但它似乎肯定是一个值得期待的领域.似乎有许多 技术可以提高并发程序的性能.

有关在多核方案中编程的任何提示/建议都表示赞赏.



1> coobird..:

查看已在Java 5中添加的新Java并发工具(在java.util.concurrent包中).它提供了比常规更高级的功能,Thread这将使编写并发应用程序变得更容易(并且更不容易出错).该课:并发的Java教程将是一个良好的开端.

到目前为止,我只使用了ExecutorService允许生成线程池的线程池,新的任务可以以Runnables或Callables 为单位进行切换(可以在执行后返回值为Futures),实际的线程代码由这个ExecutorService.

例如,使用2个线程的线程池执行一些计算,并获得结果可以很简单:

ExecutorService es = Executors.newFixedThreadPool(2);

Future f1 = es.submit(new Callable() {
    public Integer call()
    {
        // Do some processing...
        return someInteger;
    }
});

Future f2 = es.submit(new Callable() {
    public Integer call()
    {
        // Do some processing...
        return someInteger;
    }
});

Integer firstInteger = f1.get();
Integer secondInteger = f2.get();

在以上(未经测试)的代码,我所担心的是做了几个CallableS和submit其荷兰国际集团的ExecutorService,后来,用Futures到检索结果.

捕获是,一旦调用了get方法Future,如果处理未完成,程序将停止,直到Future可以检索结果.因此,在此示例中,即使f2之前的结果可用f1,程序也会等到结果f1可用.

在阅读材料方面,我很快就要购买的书籍清单是Brian Goetz的Java Concurrency in Practice,它经常出现在Java的并发性中.

Java 5文档中的Concurrency Utilities页面也提供了更多信息.



2> oxbow_lakes..:

最好的提示必须是:让您的同步正确!

这似乎有些明显,但的理解Java内存模型是至关重要的,特别是如何挥发最终下地干活,怎么同步的同时充当一个互斥体一个内存屏障,然后将新的java.util.concurrent结构,以及



3> mP...:

总是一个很好的提示 - 如果你的大多数类都是不可变的,那么一切都变得如此简单,因为不变性使人们无需担心从很多地方到很少的地方.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有