线程

2016-11-01  本文已影响0人  关先生的IT博客

线程的调用必须使用Thread类中的start方法,实现Runnable接口

    void{ 
    Runner1 r = new Runner1();//一个线程对象
    //Thread t = new Thread(r); //切成一个子线程;
    //方法1存在,方法2不存在;这个为Runnable接口的子方法
    t.start();}
    class Runner1 implements Runnable{} //方法1;实现接口
    class Runner1 extends Thread;(直接调用r.start)//方法2;继承

isAlive()判断现成是否还活着,是否终止
getPriority()获得线程的优先级数值
setPriority()设置线程的优先级..
...等等.

  sleep方法throws InterruptedException

  while(true){
    System.out.println("==="+new Date()+"===");
    try{sleep(1000);}catch(InterruptedException e){return;}
  注意:重写的方法不能抛出继承父类的不同的异常,无法直接throws Exception.
  以上的方法太过于简单,如果正在运用一个资源时候直接退出是不好的.
  stop方法,更粗暴.直接无响应杀死.尽量不使用
   while(flag){} boolean flag = true;//来这样判断,进程.

    join方法中t1.join即为先执行run中的程序,结束时开始执行主程序,相当于方法调用
    if(i%10==0){yield()};让出内存,让别人执行一会.

    ti.setPriority(Thread.NORN_Priority +3);//在正常优先级中+3;

    Thread.currentThread().isAlive()//找到这个线程,判断线程是否存在  

    synchronized(this)//锁住当前线程,实现线程同步的弊端.
    死锁问题,用例如if(a==1),synchronized(o1)我们要顺序完成这线程,
    我们synchronized(o2)设置为if(a==0)则执行死锁o2,放到o1线程中.o1放到o2中,完成死锁.
    一个进程被锁住不进行同步的时候,这个时候依旧会影响到没有锁的同步对象,需要特别注意

    注意wait()与notify()阻塞的使用以及叫醒.需要使用try,catch.
    notify是叫醒其他多个线程进行执行.而非是对自己进行叫醒.
    wait时别的线程可以访问锁定对象,调用wait时必须锁定该对象,
    而sleep时别的线程也不可以访问锁定对象.
上一篇下一篇

猜你喜欢

热点阅读