zoukankan      html  css  js  c++  java
  • 二,多线程基础

    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()

        

      

  • 相关阅读:
    宏定义中的常见使用
    VS 对于LINK fatal Error 问题 解决方案
    cocos2d-x中常见的场景切换
    给新建的Cocos2d-x 3.X的Win32工程添加CocoStudio库
    2048之军衔篇 反馈 有事留言
    http 错误代码表
    华为S5700交换机初始化和配置SSH和TELNET远程登录方法
    Linux修改网卡名
    Linux如何配置bond
    linux系统下如何挂载NTFS移动硬盘
  • 原文地址:https://www.cnblogs.com/li-jing/p/10682526.html
Copyright © 2011-2022 走看看