在哪里可以找到一些很好的例子来学习线程的基础知识?

时间:2009-05-27 18:26:07

标签: java multithreading concurrency

我在第一年结束时从事计算机科学工作,并希望搞一些基本的东西。我想使用线程,所以我可以学习。

有哪些好例子可供学习?

5 个答案:

答案 0 :(得分:9)

你应该尝试从Sun并发the java tutorials

答案 1 :(得分:3)

我推荐Doug Lea撰写的书Concurrent Programming in Java: Design Principles and Patterns 。 Doug Lea是SUNY Oswego的教授之一 - 伟大的教授,才华横溢的人。本书非常出色,为您提供了大量有关用Java编写优秀多线程代码的信息。

哦是的,Doug Lea写了大部分 java.util.concurrent 。所以他在这个问题上是一个很好的权威; - )

答案 2 :(得分:1)

ServerSocket示例非常简单,可以非常简洁地测试和使用线程。

答案 3 :(得分:0)

图像处理和检索Web数据通常会阻止用户界面,使其成为多线程设计的理想选择。

答案 4 :(得分:0)

我开始编写批处理工具,决定我不想等待,并寻找并行处理文件的方法。请原谅伪代码;我的java真的很生气。

考虑你做几次需要一些事情的情况:

foreach(var item in list)
{
    doSomethingSlow(item);
}

在这种情况下,添加一些调度代码来构建方法调用之外的线程可能是有益的。我认为正常的java方法是关闭匿名线程,如下所示。如果您需要能够指向线程以获得更多控制,取消等,则必须实现并实例化一个继承自Thread的类。

new Thread({
    public void run(){
        doSomethingSlow(item);
    }
}).start();

注意:我没有检查过这是正确的语法,请自担风险。

这种方法可以节省你一些时间,并打开大门粗略思考的大门。您还可以查看loop unwinding并使用现有的许多不同的并行类库。

我一般不喜欢代码的玩具示例,而更喜欢通过创建有用的东西来学习,所以在一些教程中使用了一段时间的想法之后,我建议你开始在你的所有项目中添加一些合理的并发代码。这样做的时间是有意义的。我不建议你尝试使每一行代码并行,因为它很难调试,并且引入了过多的实例化线程的开销。

相关问题