当前位置: 首页 > news >正文

简述网站建设的过程陕西交通建设集团蓝商分公司网站

简述网站建设的过程,陕西交通建设集团蓝商分公司网站,园林景观设计公司有丙级吗,鑫瀚通网站建设作者:Mars酱 声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。 转载:欢迎转载,转载前先请联系我! 前言 在Java中,多线程之间的通信方式有哪些?记得吗&…

作者:Mars酱

声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。

转载:欢迎转载,转载前先请联系我!

前言

在Java中,多线程之间的通信方式有哪些?记得吗?Java多线程间通信的解决方案有很多种,比如:synchronized。使用锁来防止资源乱来,一人一个按顺序来,要么使用JDK提供的原子对象,那些Atomic关键字开头的对象,比如:AtomicInteger,这样可以在多个线程中读写值的时候保证是安全的,还有很多其他的方式,在go中,就一种:通道

通道

go的通道我根据java的理解,它就是用来解决线程之间通信的东西,go里面的关键字叫channels

以下是搜索出来的解释:

go语言提倡使用通信的方法代替共享内存,当一个资源需要在 goroutine 之间共享时,通道在 goroutine 之间架起了一个管道,并提供了确保同步交换数据的机制。声明通道时,需要指定将要被共享的数据的类型。可以通过通道共享内置类型、命名类型、结构类型和引用类型的值或者指针。这里通信的方法就是使用通道(channel),如下图所示:

图:goroutine 与 channel 的通信

是不是和java的线程安全对象是类似?或者说是队列?总之你可以按照你自己经验去理解。

如何创建通道

go提供了创建通道的语法:

通道变量名 := make(chan 数据类型)

比如,我们可以这样写:

// 创建一个int型的通道
ch1 := make(chan int)

还可以创建一个接口类型通道,比如:

ch2 := make(chan interface{})

还能创建一个结构体的通道,比如:

// 创建一个User结构体的通道,这个通道是个指针通道
ch3 := make(chan *User)

向通道发送数据

go向通道发送数据语法非常简单:

通道变量名 <-

我们向上面三个通道名发送数据,可以写成:

// 1. 给ch1通道传值0
ch1 <- 0
// 2. 给ch2通道传字符串,实际可以穿任意对象,因为前面声明了是interface对象
ch2 <- "hello, mars酱"// 创建一个userInfo结构体并初始化值
userInfo := User{1, "mars酱",
}
// 3. 发送一个结构体到通道ch3中
ch3 <- &userInfo

以上代码是无法运行的,因为go的通道有个规矩,发送和接收必须成对出现,不信邪的可以验证一下。

从通道接收数据

go从通道中接收数据的语法也简单:

data := <- ch1

这个语句是个阻塞语句,只有当data接收到了值,才会执行后续的,非阻塞的这样写:

data, ok := <- ch1

data:接收的数据,如果没有接收到,data为0。data为0取决于之前make通道的时候,ch1是个int型通道,如果是其他类型,这个data也应该是其他类型对象;

ok:boolean类型的值,表示是否接收到数据

还有个奇葩的写法:

<- ch1

这样写就表示通道里有啥都与我无关,忽略掉了。

通道的例子

一个倒数的例子,通过通道去实现一下:

// author: mars酱
func Test_chanTest(t *testing.T) {// 1. 创建一个通道ch1 := make(chan int)// 2. 启动goroutine并发go func() {// 从5 到 0for i := 5; i >= 0; i-- {// 3. 发送给通道ch1 <- i// 发完后等1秒time.Sleep(time.Second)}}()// 4. 循环接收通道数据for data := range ch1 {fmt.Println(data)if data == 0 {break}}
}

运行的结果:

发射火箭的倒数计时就是这样吧~

http://www.yayakq.cn/news/875242/

相关文章:

  • 高密网站开发增城做网站公司
  • 北京 网站设计公司永嘉专业网站建设团队
  • 鹤壁做网站优化网红营销策略分析
  • 做公众号主页面的有哪些网站咸阳住房和城乡建设局网站
  • 长安英文网站建设网址导航大全软件下载
  • 天津市做企业标准网站微信商城网站搭建
  • 建设网站有哪些术语游戏网站建设收费明细
  • 杭州市建设信用网站比较好的海报设计网站
  • 珠海选车牌号网站系统24小时妇科免费问医生
  • 佛山网站建设公司怎么选seo是什么意思广东
  • 莞城网站仿做杭州百度快照推广
  • 如何使用win2008iis建设网站一个电脑建设多个网站
  • 吉林做网站优化企业网站建立要做的准备
  • 什么伪原创网站好阿里云网页版入口
  • 网站链接跳转怎么做seo描述是什么
  • 江西响应式网站建设网站seo啥意思怎么做
  • 网络服务经理售后响应支撑服务主要包括以下哪些?忻州网站seo
  • 聊城专业网站建设公司常德做网站公司哪家好
  • 这几年做哪个网站致富莱芜金点子信息港电子版
  • 企业如何免费做网站4399小游戏网页版在线
  • 绿色系网站如何设置网站公司动态
  • 建设 展示型企业网站河北智慧团建网站登录
  • 全网营销推广网站建设网站的容量
  • 有模板怎么建站中国能源建设集团有限公司是什么级别
  • 太原网站建设tygytc健身网站建设
  • 临清网站开发网站服务合同用交印花税吗
  • 做h5网站设计百度的相关搜索
  • 个人如何做网站推广wordpress删除仪表盘
  • 同城配送网站建设廊坊seo排名公司
  • 陕西建设厅网站电商网站建设方式