zoukankan      html  css  js  c++  java
  • JAVA多线程学习1

     首先,看一下进程和线程的区别:

      进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,每个进程包含1~n个线程。

      线程:同一类线程共享代码和数据空间,每个线程都有独立的运行栈和程序计数器(PC),线程切换开销小。

      线程和进程同样分为五个阶段:创建、就绪、运行、阻塞、终止。

      多线程是指操作系统能同时运行多个任务(程序)。

      多线程是指在同一程序中有多个顺序流在执行。

    在java中药执行多线程有两种途径:

      1.继承Thread类;

        重写run()方法;执行通过 .start()来执行

      2.实现Runnable接口。

        重写run()方法;执行通过 .start()来执行

    实现Runnable接口比继承Thread类所具有的优势:

      1.适合多个相同的程序代码的线程去处理同一个资源;

      2.可以避免java的单继承的限制;

      3.增加程序的健壮性,代码可以被多个线程共享

    常用函数说明:

      1.sleep(long millis);在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)

      2.join();指等待t线程终止。(也就是在字线程调用了join(方法后面的代码,只有等到子线程结束了才能执行)

      3.yield();暂停当前正在执行的线程对象,并执行其他线程;

    Thread类的方法:sleep(),yield()等;

    Object的方法:wait()和notify();

       sleep()和yield()的区别:

      sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内坑定不会被执行;yield()只是使当前线程重新回到可执行状态,所以执行yield()方法的线程可以在回到可执行状态后重新回到执行状态。

      wait()和sleep()的区别:

  • 相关阅读:
    vim常用命令
    re正则表达式
    time和datetime
    airtestpython连接airtest及生产报告
    Java中的监视器(monitor)是什么?
    CentOS6.9安装MySQL5.7
    CentOS6不能使用yum问题修复:Cannot find a valid baseurl for repo: base
    谁说BI是新兴的有前途的技术,说穿了,就是原来的报表系统
    Trained myself of Informatica 6.0 (part 2 Installation).
    开始看lcc编译器的实现。---跟.net暂时扯不上关系。
  • 原文地址:https://www.cnblogs.com/ycmxm/p/6874511.html
Copyright © 2011-2022 走看看