1.创建线程

  继承Thread类,重写run方法;(run方法不能抛出异常,因为Thread类的run方法没有抛出异常)

  实现Runnable接口,实现run方法;

2.执行线程

  创建Thread实现类对象,调用start()方法启动线程(方式一);

  创建Thread实现类对象,把Runnable实现类的对象作为参数传递,调用Thread对象的start()方法;

3.常用方法

   Thread(String name)     初始化线程的名字

   getName()               返回线程的名字

   setName(String name) 设置线程对象名

   sleep()                    线程睡眠指定的毫秒数(静态方法,调用该方法的线程睡眠

   currentThread()         返回CPU正在执行的线程的对象(静态方法,返回调用该方法的线程对象

   getPriority()                返回当前线程对象的优先级   默认线程的优先级是5

   setPriority(int newPriority) 设置线程的优先级,虽然设置了线程的优先级,但是具体的实现取决于底层的操作系统的实现(最大的优先级是10 ,最小的1 , 默认是5)。

4.线程安全

    同步代码块

  sychronized(锁对象){

    需要被同步的代码

  }

  锁对象可以是任意对象;

  sleep方法不会释放锁;

  锁对象必须是共享的对象;

  同步函数

  用sychronized修饰函数;

  非静态的同步函数的锁对象是this对象;

  静态的同步函数的锁对象是所属类的字节码文件(class对象)

5.wait和notify

  wait和notify方法是属于Object对象的;

  wait和notify方法必须要在同步代码块或者是同步函数中才能使用;

  wait和notify方法必须由锁对象调用;

  wait():一个线程如果执行了wait方法,那么该线程就会进入一个以锁对象为标识符的线程池中等待,并释放持有的锁;

  notify():一个线程如果执行了notify方法,那么该线程就会唤醒以锁对象为标识符的等待线程中的一个;

6.interrupt

  和notify比较,interrupt是由线程对象调用的,而不是由锁对象调用的,这样可以指定要终止的线程,并且interrupt方法会抛出一个InterruptException异常。

7.守护线程

  守护线程随着主程序的存在而存在,随主程序的停止而停止。

  设置守护线程setDeamon

8.join

  加入所在的线程。并且必须等待该线程支撑完毕才能继续执行下面的语句。

 posted on 2016-07-09 18:03  十三弦  阅读(173)  评论(0编辑  收藏  举报