-1
我有下面的并发通道示例GoByExamples并发性Go的示例
Java中是否有某种等效的东西?我原以为这会更加冗长地实施相同的事情。
// Basic sends and receives on channels are blocking.
// However, we can use `select` with a `default` clause to
// implement _non-blocking_ sends, receives, and even
// non-blocking multi-way `select`s.
package main
import "fmt"
func main() {
messages := make(chan string)
signals := make(chan bool)
// Here's a non-blocking receive. If a value is
// available on `messages` then `select` will take
// the `<-messages` `case` with that value. If not
// it will immediately take the `default` case.
select {
case msg := <-messages:
fmt.Println("received message", msg)
default:
fmt.Println("no message received")
}
// A non-blocking send works similarly.
msg := "hi"
select {
case messages <- msg:
fmt.Println("sent message", msg)
default:
fmt.Println("no message sent")
}
// We can use multiple `case`s above the `default`
// clause to implement a multi-way non-blocking
// select. Here we attempt non-blocking receives
// on both `messages` and `signals`.
select {
case msg := <-messages:
fmt.Println("received message", msg)
case sig := <-signals:
fmt.Println("received signal", sig)
default:
fmt.Println("no activity")
}
}
* Java中是否有相当的东西?*是的。 *我会认为实施相同的事情会更加冗长。*很可能。我的小时费率真的是几乎令人难以置信的合理,如果你想找出肯定... – 2015-01-21 05:43:23
技术上是的,虽然我不打算这样做:-)看看http://www.ibm.com /developerworks/library/j-csp1/index.html(也有部分2和3,从该文档中链接)另外http://www.cs.kent.ac.uk/projects/ofa/jcsp/和维基百科文章在同一个http://en.wikipedia.org/wiki/JCSP。 – Intermernet 2015-01-21 05:43:24
这将是一个很好的起点:http://stackoverflow.com/questions/22561110/equivalent-of-golang-channel-in-java – 2015-01-21 06:12:43