當前位置: 華文星空 > 知識

為什麽各種手稿語言不需要像java一樣面對各種鬧心的多執行緒同步問題也能寫出那麽多優秀的軟件?

2015-01-15知識

應該這麽說,不是不需要,是封裝得比較高級

所對應的並行模式只有一種,而且多數都是像gui那樣,一個eventloop的模式,這個在gui上特別常見,比如javafx,flutter,swiftui的並行模式幾乎是一樣的,javafx叫做application thread,安卓就是main thread,flutter是ui runner,其實都是一個東西

java對於多執行緒的封裝比較原始,或者幹脆這麽說,就沒怎麽封裝,就在作業系統的執行緒外麪包了一層,你呼叫java的thread,其實就是在直接操作作業系統的執行緒api

所以java的並行模式,存在有多種可能性

eventloop那種,java當然有啊,vert.x不就是eventloop,而且vert.x在eventloop的模式上還做了發展,它是多條eventloop,node一個行程裏面只有一條eventloop,對吧?要搞多條eventloop,node需要多行程,而vert.x一個行程裏面,就有多條eventloop執行緒

像go那種,goroutine嘛,java對應的應該是loom,虛擬執行緒

所以你想要什麽樣的並行模型,java世界裏面你都能找到對應的,而且vert.x還把這些給融合起來,集大成了,所以如果你能把vert.x搞懂,你再看其他所有的所謂多執行緒,哎呀,小兒科啦

但是vert.x即便集合了這麽多東西,也沒多困難,反正原理說來說去,就那些東西,翻來覆去地說,說最多幾天就會了,聰明點的,幾分鐘聽完就懂了,初中數學比這個難多了,技術的東西其實都是操作,沒啥困難的

再說還有啥呀?沒了

所以你問是優勢還是劣勢,java這個層面,是優勢,因為我們不希望在語言這個層面,就把多執行緒給封裝起來,我們希望在lib/framework,類別庫框架這個層面,將其封裝,loom出來之後,java會分成eventloop事件迴圈執行緒為主(vert.x)以及virtual thread based也就是虛擬執行緒為主的兩種並行模式,後者主要是針對現有的那些spring,jdbc等legacy遺留程式碼提升效能用的

前者嘛,其實我一直認為,可以用來創業,創業公司,尤其是需要寫安卓,ios這些的創業公司,用vert.x,配合cloud雲端運算,極佳,因為人工成本超級低,低到我用3000一個月的實習生就能把軟件寫出來,比起其他老板去雇前端後端移動端四五個人,然後這群人還天天開會吵架互相之間推卸責任,那是不知道便宜到哪裏去了,我們一個實習生就可以把這些事都給做了

所以為什麽我能創業?秘籍就在於此

成本就這麽低,就算我搞砸了,也沒啥損失,實習生能吃掉我幾個錢?

還沒我堂妹一個月修車的錢多,她開車到處七剮八蹭的,她媽媽一個月給她修車修了幾千塊錢走,服了

所以你問這是java的優勢還是劣勢,只要你會,什麽不是優勢,對不對?

這些不都是工具而已嘛

所以鬧心嗎?你看我鬧心嗎?