Java中如何使一个线程进入阻塞态

Java中如何使一个线程进入阻塞态,第1张

假设你有一个主线程,线程名为:闭凯弯Thread_A,然后通过轿闷Thread_A创建了线程Thread_B、Thread_C,并将线程Thread_B、Thread_C作为局部变量的方式存储在Thread_A中,并孙余调用Thread_B、Thread_C的start()方法开始执行Thread_B、Thread_C,当Thread_A执行到你要停止的地方就分别调用Thread_B、Thread_C的Wait()方法,使Thread_B、Thread_C暂停,然后线程Thread_A继续执行,直到Thread_A中调用Thread_B、Thread_C的notify()方法使得Thread_B、Thread_C继续执行,大体上就是这样!

你可以尝试研究下FutureTask类和Callable接口,他们是一种阻塞线程

举个例子:

ReceiveThread

rt=new

ReceiveThread()

FutureTask

task=new

FutureTask

(rt)

Thread

t=new

Thread(task)

t.start()

String

s=task.get()//阻塞方法,只有当Callable里的call方法运算结束,才会解除阻塞蔽猛亩

class

ReceiveThread

implements

Callable

{

public

String

call()

throws

Exception{

while(....){

........

.......

return

String

}

}

}

那你就写个线程不断监听result这个值不就行了宏森,当监知察听到的是关闭的值就打印

java中的阻模配团塞式方法是指在程序调用改方法时,必须等待输入数据可用或者检测到输入结束或者抛出异常,否则程序会旦橘一直停留在该语句上,不会执行下面的语句。

java中很多方法都是属于阻塞式方法,比如卖羡InputStream中的read()方法和多线程中sleep()方法等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12243649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存