zoukankan      html  css  js  c++  java
  • java中的多线程

    程序:就是指我们写的保存在硬盘当中的静态文件

    进程:程序代码在没有被调用之前都是以静态文件方式保存在硬盘中,我们调用的时候就会从硬盘中载入到内存中,这个时候就认为开启了一个进程.只要程序加载了就会在操作系统中注册一个进程号(PID).进程是一个操作系统的概念.

    线程:当程序开始执行的时候就是javamain()方法开始执行,在栈内存中开辟main()栈帧的时候就是开启了一个线程.一个线程就是一个栈及其里面的链式栈帧,一个栈帧就对应一个方法.

    为什么要有多线程?

      1 人的需求,可以多线程解决;2 多核CPU的出现,需要提高程序的执行效率

    创建线程的方式:

      1 继承java.lang.Thread,重写run()方法(run方法就相当于新线程中的main方法,是程序执行的起点和终点)

      2 创建一个Thread实现java.lang.Runnable并实现接口的run()方法

    启动线程只有一个方法:

      对象名.start(),启动后默认就调用了run()方法

      不写对象名.run(),这样是方法的调用,不是开启一个新的线程

    线程类的常用方法:

      setName():给线程取名字,先取名字再启动,启动之后就不能再改名字了

        不设置名字的话就会默认是Thread-0,Thread-1......(new的时候就起名字了)

      getName():获得当前线程的名字

      static currentThread():获得当前线程的内存地址

      static sleep(time):让当前的线程睡眠指定的毫秒数

      setPriority():设置线程的优先级

        MIN_PRIORITY : 1

        MAX_PRIORITY : 10

        NORM_PRIORITY : 5

      interrupt():强制唤醒休眠的线程

      join():当前线程执行完毕再在本线程后面继续往下执行,即当前行以后所有线程的代码都必须等待当前线程执行完毕再执行,相当于线程合并,变成单线程,还是从上向下执行

      static yield():在当前时间片给同一个优先级的线程让路,不同优先级的不让路,下一个时间片不一定再让

    守护线程(兜底线程)

      活,他先活;,他后死:这个就是守护线程的特征

      每个程序在运行时,默认的都会开启一个守护线程,用于监听我们正常的程序的运行,当我们正常的程序运行出错以后,就会跳到这个守护线程.守护线程会去做一些销毁资源,记录日志等操作,然后再退出jvm.所以说,我们平常程序一启动,默认就会有两个线程存在

      守护线程是jvm默认提供的,不用我们管.

      我们可以用setDaemon()把我们的线程设置成守护线程.该方法必须在启动线程之前调用,即在start之前调用这个方法

  • 相关阅读:
    java 多线程踩过的坑
    css transform旋转属性
    java 实现JSON数据格式化
    shell if判断
    Shell脚本变量判断参数命令
    CentOS7 yum方式安装mysql5.7客户端安装
    sed命令你给删除指定行
    awk查询文件最长或者最短行
    Ansible离线安装
    gitlab的仓库迁移到新的gitlab
  • 原文地址:https://www.cnblogs.com/lianggx66/p/4802663.html
Copyright © 2011-2022 走看看