3

我想知道是否存在一种方法来并行化 Java 中的查询(或有框架或库),如 C# 和 Linq:

var query = from item in source.AsParallel().WithDegreeOfParallelism(2)
        where Compute(item) > 42
        select item;

如果我不能并行化查询,如果我可以在 c# 中做这样的事情(每个并行化一个):

  Parallel.ForEach(files, currentFile =>
        {
            // The more computational work you do here, the greater  
            // the speedup compared to a sequential foreach loop. 
            string filename = System.IO.Path.GetFileName(currentFile);
            System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(currentFile);

            bitmap.RotateFlip(System.Drawing.RotateFlipType.Rotate180FlipNone);
            bitmap.Save(System.IO.Path.Combine(newDir, filename));

            // Peek behind the scenes to see how work is parallelized. 
            // But be aware: Thread contention for the Console slows down parallel loops!!!
            Console.WriteLine("Processing {0} on thread {1}", filename,
                                Thread.CurrentThread.ManagedThreadId);

        } 

请如果您发布任何框架或库,您能告诉我您使用它的经验吗?谢谢你的时间。

关于 c# 和 linq 你可以在这里找到文档:http: //msdn.microsoft.com/en-us/library/dd997425.aspx

4

2 回答 2

1

没有直接翻译。首先,Java 没有 LINQ,也没有任何标准的并行集合类。

GPars可能是最合适的。

请注意,虽然它针对的是 groovy,但它的 API 完全可以从 java 中使用

于 2012-10-13T15:39:33.133 回答
0

也许Fork/Join 框架可以帮助你?这里是java教程

于 2012-10-13T15:26:04.847 回答