当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

无缺晓得Java的多线程-线程间的通信[Java编程]

赞助商链接



  本文“无缺晓得Java的多线程-线程间的通信[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

线程间的通信

1. 线程的几种状况

线程有四种状况,任何一个线程必定处于这四种状况中的一种:

1) 产生(New):线程对象已经产生,但还没有被启动,所以无法履行.如通过new产生了一个线程对象后没对它调用start()函数之前.

2) 可履行(Runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中挑选一个线程并启动它.当一个线程处于可履行状况时,表示它大概正处于线程池中等候排排程器启动它;也大概它已正在履行.如履行了一个线程对象的start()办法后,线程就处于可履行状况,但显而易见的是此时线程不一定正在履行中.

3) 死亡(Dead):当一个线程正常完毕,它便处于死亡状况.如一个线程的run()函数履行完毕后线程就进入死亡状况.

4) 阻滞(Blocked):当一个线程处于阻滞状况时,系统排程器就会忽视它,不对它举行排程.当处于阻滞状况的线程重新回到可履行状况时,它有大概重新履行.如通过对一个线程调用wait()函数后,线程就进入阻滞状况,只有当两次对该线程调用notify或notifyAll后它才能两次回到可履行状况.

2. class Thread下的常用函数函数

2.1 suspend()、resume()

1) 通过suspend()函数,可以使线程进入阻滞状况.通过suspend()使线程进入阻滞状况后,除非收到resume()消息,不然该线程不会变回可履行状况.

2) 当调用suspend()函数后,线程不会释放它的“锁标志”.

例11:

class TestThreadMethod extends Thread{

public static int shareVar = 0;

public TestThreadMethod(String name){

super(name);

}

public synchronized void run(){

if(shareVar==0){

for(int i=0; i<5; i++){

shareVar++;

if(shareVar==5){

this.suspend(); //(1)

}

}

}

else{

System.out.print(Thread.currentThread().getName());

System.out.println(" shareVar = " + shareVar);

this.resume(); //(2)

}

}

}

public class TestThread{

public static void main(String[] args){

TestThreadMethod t1 = new TestThreadMethod("t1");

TestThreadMethod t2 = new TestThreadMethod("t2");

t1.start(); //(5)

//t1.start(); //(3)

t2.start(); //(4)

}

}


  以上是“无缺晓得Java的多线程-线程间的通信[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 无缺晓得Java的多线程-线程间的通信
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .