Java中多线程

 在Java中实现多线程有2中方法可以建立子线程,Thread类定义了多种方法可以被派生类储在

对于所有的方法,唯一需要被重载的是Run()方法。当然这个也是实现Runnnable 接口所需要的同样的方法。很多Java程序员认为类尽在他们被加载或者修改时应该被扩展,因此如果不重载Thread的其他方法,最好只是实现Runnable接口。

问题1、一个线程如何知道另一个线程已经结束?

在Java中有2种方法可以判断一个线程是否已经结束。第一个方法可以在线程组调用isAlive()方法,这个方法有Thread定义,它的通常形式为: final boolean isAlive()

如果所调用的线程仍然在运行,isAlive()方法返回true,如果不是则返回false;

但是isAlive方法很少调用,等待线程结束的更常用的方法是调用join(),描述如下:

final void join()throws InterruptedException

该方法等待所调用的线程结束,该名字来自于要求线程等待直到指定的线程参与的概念;

join方法的附加形式允许给等待的指定的线程结束定义一个最大的时间。

join方法将线程之间的并行改为串行

 

问题2:线程间的通信

为了避免轮询,java包含了通过wait(),notify(),notifyAll()方法的实现的一个进程间的通信的机制;这些方法在对象中是使用final方法实现的,所以所有的类都包含他们。这三个方法仅在synchronized方法中才能被调用。具体如下:

wait():告知被调用的线程放弃管程进入休眠知道其他的线程进入相同的管程并且调用notify();

notify():恢复相同对象中第一个调用wait()的线程

notifyAll():恢复相同对象中所有调用wait的线程。具有最高级的线程优先;

 

在java中Thread类中定义了suspend(),resume(),stop()3个方法对线程进行挂起,恢复,终止操作;

 

 

 

 

 

 

转载于:https://my.oschina.net/u/2475253/blog/3067689

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值