当前位置: 技术问答>java相关
类似VC里信号量的功能在JAVA里如何实现?
来源: 互联网 发布时间:2015-10-02
本文导语: 就是说 有这么一个变量 在一个线程使用的时候 其他的线程都在等待,处于阻塞状态 等这个线程使用完毕以后,他释放这个资源 其他的线程才能被唤醒 典型用在哲学家问题里的叉子 相邻的哲学家不可能同时使用一...
就是说
有这么一个变量
在一个线程使用的时候
其他的线程都在等待,处于阻塞状态
等这个线程使用完毕以后,他释放这个资源
其他的线程才能被唤醒
典型用在哲学家问题里的叉子
相邻的哲学家不可能同时使用一个叉子
如果有一个哲学家使用叉子吃饭的时候
相邻的如果想吃饭就必须等待
在VC里是Semaphore类的
在使用的时候--
使用完毕以后ReleaseSemaphore
其他的线程在使用这个信号量的时候先WaitForSingleObject
如果等到才继续执行
否则就阻塞
用synchronized的话,怎么设置那个类似vc里信号量类型的变量?设置成实例变量吗?
有这么一个变量
在一个线程使用的时候
其他的线程都在等待,处于阻塞状态
等这个线程使用完毕以后,他释放这个资源
其他的线程才能被唤醒
典型用在哲学家问题里的叉子
相邻的哲学家不可能同时使用一个叉子
如果有一个哲学家使用叉子吃饭的时候
相邻的如果想吃饭就必须等待
在VC里是Semaphore类的
在使用的时候--
使用完毕以后ReleaseSemaphore
其他的线程在使用这个信号量的时候先WaitForSingleObject
如果等到才继续执行
否则就阻塞
用synchronized的话,怎么设置那个类似vc里信号量类型的变量?设置成实例变量吗?
|
synchronized(变量){
//程序
}
这样对于这个变量的访问都被同步了
//程序
}
这样对于这个变量的访问都被同步了
|
syncrhonized方法保证独占,
在sychronized方法里wait()/notifyAll()
保证协作,
在CSDN上搜索 线程,
你会得到满意地解释
在sychronized方法里wait()/notifyAll()
保证协作,
在CSDN上搜索 线程,
你会得到满意地解释
|
叉子作为资源,将你的所有访问叉子资源的线程体都置为synchronized,
这样所有访问同一资源的线程都只有一个可以访问,其他等待。
synchronized run() {
.........
}
这样所有访问同一资源的线程都只有一个可以访问,其他等待。
synchronized run() {
.........
}
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。