由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 求Java78大牛们帮忙看看这个fork/join的面试题
相关主题
如何实现将网页内容自动存取?请教一道练习题(C,OS)
这里人多,请问Java如何读取需要登录的网页的内容 (转载)问个c++ 编译的问题
core java里有跟C++ std::async类似的东西吗?eclipse中总出现这样的错误提示怎么办?
Java 提高performance问题[合集] how to call a korn shell script in JAVA program?
cassandra async 问题java GZip 求助
Windows XP与Multithreading Programming请问个BufferedReader 读 file 的问题 (转载)
Pthread support on Windows XPc/c++/java的对象/结构输入
请教c++ multithreading入门问题[合集] 请教C/C++/JAVA输入问题
相关话题的讨论汇总
话题: file话题: files话题: java8话题: list话题: string
进入Programming版参与讨论
1 (共1页)
w********p
发帖数: 948
1
1. generates 100 文件,每个文件有10,000行,每行10个数字,每个数字8位
2. 读10 文件,uses fork/join paradigm to map/reduce。 先sort 每个文件,然后
merge多个文件,outputs results 到一个output 文件,每行10个数字,每个数字8位
假设程序是在production环境里。
---
问题1. java8, java nio里提供了
Files.lines(Paths.get(OUTPUT_DIR + fileName)).
collect(Collectors.toList());
我的理解是这个在java8里应该已经是multithread的了。
但是如果我想同时multithread读10 files. 该怎么写?
问题2. java8 里要怎样同时写(writer) 十个files
//像是java6里开10个Threads, 这个我是会的。
还有java8里到底用什么操作Files,也有很多的讨论。
是用Using java.nio.file.Files
还是FileChannel
还是FileChannel and memory mapped file
还是FileChannel and Direct Memory Access
还是RandomAccessFile
求java8大牛们不吝赐教
t**r
发帖数: 3428
2
面试问这个?对库不熟悉的直接会挂了。。
w********p
发帖数: 948
3
这个是作业。
翻了很多links。还是很没头绪的说。

【在 t**r 的大作中提到】
: 面试问这个?对库不熟悉的直接会挂了。。
A*******e
发帖数: 2419
4
那你说是面试题,来骗答案?
找TA去啊。

【在 w********p 的大作中提到】
: 这个是作业。
: 翻了很多links。还是很没头绪的说。

c*****e
发帖数: 3226
5
很容易的。
class SortSolution extends RecursiveTask {
final File[] files;
final int size;
Solution (File[] files) {
this.files = files;
this.size = files.length;
}
File[] sort() {
if (size== 1)
return files[0].sort();
File[] f1 = new SortSolution (files[0:size/2];
f1.fork();
File[] f2 = new SortSolution (files[size/2:size];
return f2.compute() + f1.join();
}
}
其实这玩意用Guava ListenableFutureTask 也很爽, 因为可以串联。只是这里用不上
ListeningExecutorService service = MoreExecutors.listeningDecorator(
Executors.newFixedThreadPool(10));
List> futures = ..
for (File f: files) {
ListenableFuture ft = service.submit(new Callable() {
public File call() {
return sortFile(f);
}
});
futures.add(ft)
}
ListenableFuture> ft2 = Futures.allAsList(futures);

【在 w********p 的大作中提到】
: 这个是作业。
: 翻了很多links。还是很没头绪的说。

w********p
发帖数: 948
6
面试的作业. 满多公司都会有让你在家写的面试作业啊。
比如,Yelp, Sansum, Uber, ....

【在 A*******e 的大作中提到】
: 那你说是面试题,来骗答案?
: 找TA去啊。

w********p
发帖数: 948
7
非常谢谢。我仔细研究下。

【在 c*****e 的大作中提到】
: 很容易的。
: class SortSolution extends RecursiveTask {
: final File[] files;
: final int size;
: Solution (File[] files) {
: this.files = files;
: this.size = files.length;
: }
: File[] sort() {
: if (size== 1)

w********p
发帖数: 948
8
我有去翻了写资料。
不过fork-join 和Parallel stream 哪个更快,是有争议的。
您有这方面的经验吗?
实在不行,我就fork-join 和Parallel stream 都写了。然后跑下benchmark.

【在 c*****e 的大作中提到】
: 很容易的。
: class SortSolution extends RecursiveTask {
: final File[] files;
: final int size;
: Solution (File[] files) {
: this.files = files;
: this.size = files.length;
: }
: File[] sort() {
: if (size== 1)

w********p
发帖数: 948
9
程序终于吭哧吭哧写完了。
公司说要和我面聊suggestion. 头疼。不知道要建议个啥。
恳请大牛们批评指教。与其被别人challenge, 不如在这预先知道的说。一定发包子感
谢的说。
https://github.com/selinaGit/SortNFiles
为了搏眼球,牺牲下隐私。貌似无盐,切勿下载哦,否则是小猪🐷
还有主要的reference 是下面这个link. 照葫芦画瓢的说。
http://www.oracle.com/technetwork/articles/java/fork-join-42260
我想请教下在上面的link里为什么要用static method return new object.
而不是 用非static method "public Document fromFile(File file)" 然后 new
WordCounter obj
调用obj.Document fromFile(File file)
没有concurrency 的经验。问题有点傻。求教的说。
我的理解是这样的话,fork之前,file就read到list里了,file reading不会
是多线程一起run。
class Document {
private final List lines;

Document(List lines) {
this.lines = lines;
}

List getLines() {
return this.lines;
}

static Document fromFile(File file) throws IOException {
List lines = new LinkedList<>();
try(BufferedReader reader = new BufferedReader(new FileReader(file))
) {
String line = reader.readLine();
while (line != null) {
lines.add(line);
line = reader.readLine();
}
}
return new Document(lines);
}
}
1 (共1页)
进入Programming版参与讨论
相关主题
[合集] 请教C/C++/JAVA输入问题cassandra async 问题
perl, Java, C/C++ 在数据处理和分析中的比较Windows XP与Multithreading Programming
你们写过的最长的main函数有多长?Pthread support on Windows XP
when I run junit test, how can I log the java log to a file?请教c++ multithreading入门问题
如何实现将网页内容自动存取?请教一道练习题(C,OS)
这里人多,请问Java如何读取需要登录的网页的内容 (转载)问个c++ 编译的问题
core java里有跟C++ std::async类似的东西吗?eclipse中总出现这样的错误提示怎么办?
Java 提高performance问题[合集] how to call a korn shell script in JAVA program?
相关话题的讨论汇总
话题: file话题: files话题: java8话题: list话题: string