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

        

      

  • 相关阅读:
    编程时候底层函数的来源
    (转)线程相关的东东
    (转)CreateThread与_beginthread,内存泄漏为何因(原帖排版有些不好 ,所以我稍微整理下)
    测试CDockablePane。 测试他的最基本的功能。
    (转)单例模式(Singleton)的常见应用场景
    (转)http 之session和cookie
    Palindrome Linked List
    Basic Calculator II
    (转)外部排序
    (转)eclipse调试java程序的九个技巧
  • 原文地址:https://www.cnblogs.com/li-jing/p/10682526.html
Copyright © 2011-2022 走看看