異步和讀寫鎖
到這里并發基礎的講解就到了尾聲了,大家對并發程序設計有沒有一定的了解了呢?其實并發有很多門道,我們先開看看之前我們的鎖的問題,當我們加了鎖之后就會出現并發中效率降低,那么怎么解決這個問題呢?
其實在并發中,重要的是設計思想,這里的思想有兩種,一種是異步,另一種是讀寫分離。
異步其實也出現在操作系統中,就是在一個線程在訪問同步的方法的時候,其他線程可以訪問非同步方法以提高效率。
讀寫分離這個思想最重要出現在數據庫中,在MySQL中,用戶讀取數據的時候,并不加行鎖,然而修改數據的時候會給數據庫加行鎖。
在JDK的并發包中就存在這樣的鎖,叫做讀寫鎖,可以實現讀寫分離。
同樣,異步方式大家可以嘗試,不需要借助工具的。
并發的應用
大家都知道的Java Web容器Tomcat就用到了Java的并發。
Web應用解決的是B/S的應用,其實B/S在某種程度上就是一種C/S。那么可以分為客戶端和服務器端,在使用Tomcat中,Tomcat使用多線程實現了用戶的并發訪問,Tomcat會為每一個訪問服務器的客戶機都建立一個線程,并發操作。但是Tomcat的缺陷在于Tomcat使用的是一種偽異步的方式,當線程池中的所有線程都阻塞的時候必將影響執行效率,還有其他Web容器采用了新的方式就是Java的NIO,異步的IO,這個大家可以了解一下游戲服務器的守護進程
Java還有很大的用處就是網絡游戲服務器的守護進程,用來為每個用戶提供服務,為了保證游戲的效率的穩定,這里大量的使用了Java NIO,其中還有一個重要的框架叫做Netty,大家感興趣的可以作為了解。