java线程总结(一)

来源:互联网 发布:python 读取word 编辑:程序博客网 时间:2024/05/18 04:00

    这周有许多杂事干扰,导致自己没有提前做完作业,今后最好合理安排时间,不要任务压到最后;还有就是书要看起来,目前有太多的书挤压在身边,翻都没有翻过,做一个高效的人真不容易,此外还有学会和大家多沟通,

    我想做个线程系列的总结,在写的过程中把概念弄懂,此外还能够应付一下java提高班的作业。 java的线程是个挺大的内容,网上对java的总结也都非常完善,不过别人的总不是自己的,看过就容易忘记,还有就是别人对线程,进程的讲解大多也仅限于java语言方面,而没有从一个更高的高度来讲解,我这边正好有一些资料,想着求精而不贪多的态度,写上一些给自己看看,而不要总是记流水账好了。

    并发和并行:

    并发程序是问题域中的概念--程序需要设计成能处理多个同时(或者几乎同时中)发生的事), 这些事是不同的事。
    并行是方法域中的概念——通过将问题中的多个部分并行执行,来加速解决问题。
    令一种等价的说法是:
    并发是一同一时间应对多件事的能力; 并行是同一时间做多件事的能力。

    举个例子:

web服务器响应众多的请求,把它认为是并发比较好,因为每个服务的业务逻辑一般不同,是处理不同的事情,即问题本身就是有许多,需要分别处理。

而客户端多线程下载文件可以认为是并行,因为多线程只是把一个文件分成了若干个部分,每个线程分别下载一段,再拼起来,这样做是为了加速问题的解决。

    当然,我们无需对这2个概念做严格的区分,因为很多时候,他们本来就是混在一起的。

    线程与锁

public class HelloWorld {  public static void main(String[] args) throws InterruptedException {    Thread myThread = new Thread() {        public void run() {          System.out.println("Hello from new thread");        }      };      myThread.start();    Thread.yield();    System.out.println("Hello from main thread");    myThread.join();  }}

    上面代码中的yield()的功能是主线程让步(当前线程想要让出对处理器的占用),不过即使主线程让步后,操作系统(还是虚拟机?)还是可能会执行同一个线程,因此输出的结果可能是:

Hello from main threadHello from new thread      
    也可能是

Hello from main threadHello from new thread 

    参考文献

    《七周七并发》

0 0
原创粉丝点击