学习go与Java的讨论
admin 阅读: 2024-03-18
后台-插件-广告管理-内容页头部广告(手机) |
这几天博主学习了一下go,发现比Java简单很多,go的代码更少更为简洁,并且并发问题从内部调用锁即可,
func runtaks(id int) string { time.Sleep(10 * time.Microsecond) return fmt.Sprintf("then result is from %d ", id) } func FristResponse() string { numOfRunner := 10 ch := make(chan string, numOfRunner) 漏问题 for i := 0; i < numOfRunner; i++ { go func(i int) { ret := runtaks(i) ch <- ret }(i) } return <-ch }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
此处go代码各位觉得用Java怎样去解决呢,
func Dosomething(p interface{}, wg *sync.WaitGroup) { wg.Add(2) //加锁 shouldReturn := newFunction(p, wg) newFunction1(p, wg) if shouldReturn { return } wg.Wait() //释放锁 } func newFunction1(p interface{}, wg *sync.WaitGroup) { switch v := p.(type) { case int: fmt.Println("int1", v) case string: fmt.Println("string1", v) case bool: fmt.Println("bool1", v) default: fmt.Println("erro1") } } func newFunction(p interface{}, wg *sync.WaitGroup) bool { if i, ok := p.(int); ok { fmt.Println("int", i) return true } else if s, ok := p.(string); ok { fmt.Println("string", s) return true } else { fmt.Println("erro") } return false } func TestEnum(t *testing.T) { var wg sync.WaitGroup Dosomething(10, &wg) Dosomething("dhahd", &wg) }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
此处也是一样,各位觉得用Java需要写多少行代码搞定
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |