• 二,多线程基础


    1.什么是线程:

      是进程内执行单元;

    2.线程的基本操作:

      新建线程:Thread t1 = new Thread();t1.start();

          若t1.run();与t1.start()执行方法都是run()方法,但是t1.run()是没有开启一个线程的;

      终止线程:Thread.stop();不推荐使用,会释放所有monitor;

      中断线程:

        public void Thread.interrupt()     //中断线程;

        public boolean Thread,isInterrupted()    /判断是否中断;

        public static boolean Thread.interrupted()    //判断是否被中断,并清除当前中断状态;

      挂起(suspend)和继续执行(resume)线程:

        suspend()不会释放锁;如果加锁发生在resume()之前,则发生死锁;

      等待线程结束(join)和谦让(yield)

        join的本质 while(isActive()){ wait();};线程执行结束后,系统会调用notifyAll()

        不要在Thread实例上使用wait()和notify()方法。

    3.守护线程:在后台默默完成一些系统性的服务,比如垃圾回收线程,JIT线程就可以理解为守护线程;当一个Java应用内,只有守护线程时,java虚拟机会自然退出。

    4.线程的优先级:

      public final static int MIN_PRIORITY = 1;

      public final static int NORM_PRIORITY = 5;

      public final static int MAX_PRIORITY = 10;

      Thread hight = new HightPriiority();

      Thread low = new LowPriiority();

      hight.setPriority(Thread.MAX_PRIORITY);

      low.setPriority(Thread.MIN_PRIORITY );

      low.start();

      hight.start();

      高优先级的线程更容易在竞争中获胜;

    5.基本的线程同步操作

      synchronized:

        指定加锁对象:对给定对象加锁,进入同步代码前要获得给定对象的锁;

        直接作用于实例方法:相当于对当前实例加锁,进入同步代码前要获得当前实例的锁;

        直接作用于静态方法:相当于对当前类加锁,进入同步代码前要获得当前类的锁;

      Object.wait() Object.notify()

        

      

  • 相关阅读:
    什么是数据集
    Fastreport使用经验(转)在Delphi程序中访问报表对象
    多步操作产生错误,请检查每一步的状态值
    删除整个目录
    Win7下虚拟机个人使用小结:Virtual PC,VMware和VirtualBox
    Ribbon_窗体_实现Ribbon风格的窗体
    数学建模python matlab 编程(椭圆声学原理画图证明,解析几何)
    数学建模python matlab 编程(指派问题)
    matlab中如何给一个矩阵中的某几个特定位置赋值
    python matlab 带包实现全排列
  • 原文地址:https://www.cnblogs.com/li-jing/p/10682526.html
Copyright © 2020-2023  润新知