java多线程

来源:互联网 发布:消费客户年龄数据分析 编辑:程序博客网 时间:2024/06/06 13:20

     今天对java多线程进行了一次总体的了解,线程的启动---->暂停---->中断---->销毁这几个状态进行统一的了解

     线程的启动:

             1.Thread t1 = new Thread();   t1.start();

              2. Runnable r = new Runnable();   Thread t2 = new Thread(r); t2.start();

             3.new Thread(){public void run(){}}.start();

             4.Runnable r = new Runnable(){public void run(){}}; new Thread(r).start();

        这样的话线程就会处于运行状态,在多线程的情况下,每一次的运行情况都不样,一个线程所属的线程组也都不一样。

    假如:我现在有一个需求,我要让一个对象生产一个东西出来,就消费掉,生产一个就消费一个?

     这时候就涉及到了同步的概念,利用锁的机制能够很好的把握不要多生产,也不要多消费。synchronized(对象){同步代码块},可以对函数进行同步,也可以对一个代码块进行同步,找到哪些是需要共享的数据,就对其进行同步使用。

     在JDK1.5以后,我们使用了另外一种锁的机制:使用Lock接口来锁,Lock lock = newReentrantLock(); lock.lock();就是进行了加锁,然后通过Condition condition = lock.newCondition();通过condition.await();condition.signal();condition.signalAll();来使线程处于等待状态或者唤醒别的对象。最后特别要注意必须对这个锁进行释放,lock.unlock();在try{}catch(Exception e){}finally{lock.unlock()};

 

    说完了启动并且启动之后应该注意的问题,就说说暂停了:Thread暂停是使用Thread.yield()方法来进行暂停操作,短暂的暂停

    

    Thread的中断操作:Thread.interrupt();就是对线程的暂停操作

  如何停止一个线程的运行,不能用Thread.stop();因为现在已经过时了,可以通过一个boolean变量对循环的控制