zoukankan      html  css  js  c++  java
  • Java 多线程

    进程与线程

    进程的概念: 进程是cpu分配资源的最小单位
    线程的概念: 线程是cpu执行的最小单元
    一个进程包含多个线程,但至少包括一个线程
    java 中的线程调度算法使用的是 抢占式。
    一个线程用完CPU之后,操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。


    java中线程的两种创建方式:

    继承Thread类,重写run()方法;实现Runnable接口,重写run()方法。
    二者是有一些区别的:

    1. 使用继承,操作简单,直接操作线程,但有局限性,因为继承只有一次的机会;
    2. 使用接口实现,可以实现多实现的效果,可重用性高,耦合性低。

    线程类的几个难以理解的方法:

    void join(long millions) 表示当前调用该方法的线程加入执行队列,是剥夺式的。参数用来指定当前进程执行的毫秒数,如果不指定默认是把调用join()的线程执行完毕。正在执行的线程是进入阻塞队列
    static void yield() 表示把当前正在执行的线程调入到就绪队列,然后处理机从就绪队列重新选择相同优先级的线程来执行,有可能之前进程重新被调度,对外表现的就是该方法没有生效。


    线程同步的实现方法:

    实现线程同步的目的:防止共享数据的脏读。
    synchronized 关键字
    可是使用同步代码块,也可使用在方法中。对于同步代码块需要传入一个信号量,通常是当前对象(this):

    synchronized(this){
    	//TODO CODE
    }
    

    synchronized关键字就相当于PV操作。

  • 相关阅读:
    KMeans Algorithm
    [Little Case]Reconstruct Tangent From Point Cloud
    来本有趣的电子书——林产与木材科学导论
    Lafortune Paper In RenderMan
    【AI】人类的记忆是不是差值存储的?
    【AI】关于人工情感的一些随想
    【毕设准备】硬件准备
    《人脑之谜》读书笔记
    【原创】C#生成类属性set get
    【C#入门】第一个C#下windows程序
  • 原文地址:https://www.cnblogs.com/zhaoningzyn/p/12372048.html
Copyright © 2011-2022 走看看