线程核心概念

1、关于锁对象。

(1)同步代码块的锁对象是什么?

  同步代码块的锁是任意对象(即锁对象,可以选择任意对象)。 

(2)同步方法(就是把锁加在方法上)的锁对象?

  同步方法的锁对象是this对象(当前调用方法的对象)。

(3)静态方法的锁对象是谁呢?

  是当前类的字节码文件对象。

2、等待唤醒机制。

(1)等待方法:wait();  ,唤醒方法:notify(); 。

(2)sleep和wait()的区别?

  wait():是Object类的方法,可以不用传递参数。释放锁对象,之后其它线程可以进入被锁代码。

  sleep():是Thread类的静态方法,需要传递参数。不释放锁对象,其他线程无法进入被锁代码。

3、yield()方法。

  格式:public static void yield():,暂停当前正在执行的线程对象,并执行其他线程。 

  这个方法是为了让当前线程停下来,释放CPU执行权,把机会让给其他的线程,只能暂停当前线程,并不能确定接下来执行权被谁抢到,接下来谁使用执行权是没有顺序的,如果要实现线程依次执行,还要使用等待唤醒机制。

4、线程的优先级。

  线程优先级范围是1-10,数值越大,得到CPU执行权的可能性越大,如果没有指定优先级别,默认优先级是5。

  方法:public final int getPriority():,此方法返回当前线程优先级。

      public final void setPriority(int newPriority):,这个方法可以更改线程的优先级。

5、加入线程。

  这个绝对是特权贵族。

  方法:public final void join():,设置线程为加入线程。

  如果将线程设置为加入线程,那么所有线程必须等待加入线程执行完毕,其他线程才能开始执行。 

6、守护线程。

  这个是我最喜欢的,好温馨的说。

  方法:public final void setDaemon(boolean on),设置线程为守护线程。

  主线程执行结束,守护线程就结束了。所以我认为更应当叫做陪伴线程,主线程一旦结束,那么它的陪伴线程都要结束。

 小结:第一次学到守护线程,感觉特别高兴,原来编程也能这么温馨。。。

线程核心概念_第1张图片

你可能感兴趣的:(多线程,守护线程,等待唤醒机制,线程优先级,加入线程)