package main
import (
"fmt"
"sort"
"sync"
)
type A struct {
N int
}
func main() {
a := new(A)
var wg sync.WaitGroup
for i := 0; i < 1000; i++ {
wg.Add(1)
go func() {
P(a)
wg.Done()
}()
}
wg.Wait()
fmt.Println(haveRepeatEle(xs))
sort.Ints(xs)
fmt.Println(len(xs))
}
var xs = []int{}
var mu sync.Mutex
func P(a *A) {
mu.Lock()
i := a.N
a.N++
xs = append(xs, i)
mu.Unlock()
}
func haveRepeatEle(xs []int) bool {
for i := 0; i < len(xs); i++ {
x := xs[i]
fmt.Println("i:", i)
for j := i + 1; j < len(xs); j++ {
fmt.Println("j:", j)
if x == xs[j] {
return true
}
}
}
return false
}
对象属性并发安全锁
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- JAVA并发编程与高并发解决方案 - 并发编程 二 相关文章 JAVA并发编程与高并发解决方案 - 并发编程 一 ...
- 1、synchronized的基本使用 Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码...
- ① 还未下笔,就已经被自己将要写的东西弄得眼眶潮润。 其实我要写的东西,你也拥有过。只是人物和故事不同罢了。但也正...