二,多线程基础

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

    

  

猜你喜欢

转载自www.cnblogs.com/li-jing/p/10682526.html
今日推荐