當前位置:首頁 » 編程語言 » java容器類

java容器類

發布時間: 2024-02-02 18:08:09

❶ 幾種開源java Web容器線程池的實現方法簡介

其中Resin從V3.0後需要購買才能用於商業目的,而其他兩種則是純開源的。可以分別從他們的網站上下載最新的二進制包和源代碼。
作為Web容器,需要承受較高的訪問量,能夠同時響應不同用戶的請求,能夠在惡劣環境下保持較高的穩定性和健壯性。在HTTP伺服器領域,ApacheHTTPD的效率是最高的,也是最為穩定的,但它只能處理靜態頁面的請求,如果需要支持動態頁面請求,則必須安裝相應的插件,比如mod_perl可以處理Perl腳本,mod_python可以處理Python腳本。
上面介紹的三中Web容器,都是使用Java編寫的HTTP伺服器,當然他們都可以嵌到Apache中使用,也可以獨立使用。分析它們處理客戶請求的方法有助於了解Java多線程和線程池的實現方法,為設計強大的多線程伺服器打好基礎。
Tomcat是使用最廣的Java Web容器,功能強大,可擴展性強。最新版本的Tomcat(5.5.17)為了提高響應速度和效率,使用了Apache Portable Runtime(APR)作為最底層,使用了APR中包含Socket、緩沖池等多種技術,性能也提高了。APR也是Apache HTTPD的最底層。可想而知,同屬於ASF(Apache Software Foundation)中的成員,互補互用的情況還是很多的,雖然使用了不同的開發語言。
Tomcat 的線程池位於tomcat-util.jar文件中,包含了兩種線程池方案。方案一:使用APR的Pool技術,使用了JNI;方案二:使用Java實現的ThreadPool。這里介紹的是第二種。如果想了解APR的Pool技術,可以查看APR的源代碼。
ThreadPool默認創建了5個線程,保存在一個200維的線程數組中,創建時就啟動了這些線程,當然在沒有請求時,它們都處理等待狀態(其實就是一個while循環,不停的等待notify)。如果有請求時,空閑線程會被喚醒執行用戶的請求。
具體的請求過程是:服務啟動時,創建一個一維線程數組(maxThread=200個),並創建空閑線程(minSpareThreads=5個)隨時等待用戶請求。當有用戶請求時,調用 threadpool.runIt(ThreadPoolRunnable)方法,將一個需要執行的實例傳給ThreadPool中。其中用戶需要執行的實例必須實現ThreadPoolRunnable介面。 ThreadPool首先查找空閑的線程,如果有則用它運行要執行ThreadPoolRunnable;如果沒有空閑線程並且沒有超過 maxThreads,就一次性創建minSpareThreads個空閑線程;如果已經超過了maxThreads了,就等待空閑線程了。總之,要找到空閑的線程,以便用它執行實例。找到後,將該線程從線程數組中移走。接著喚醒已經找到的空閑線程,用它運行執行實例(ThreadPoolRunnable)。運行完ThreadPoolRunnable後,就將該線程重新放到線程數組中,作為空閑線程供後續使用。
由此可以看出,Tomcat的線程池實現是比較簡單的,ThreadPool.java也只有840行代碼。用一個一維數組保存空閑的線程,每次以一個較小步伐(5個)創建空閑線程並放到線程池中。使用時從數組中移走空閑的線程,用完後,再歸還給線程池。

❷ JAVA中的JPanel怎麼使用呢

使用方法:

JPanel可以為添加到窗體中的輕型控制項提供通用的容器。默認情況下,面板容器不會向控制項添加任何除自身背景之外的顏色,但是,可以輕松地向其添加邊框(borders)並根據需要改制樣式。

在大多數Java GUI外觀體驗(look and feel)中,面板容器默認是不透明。不透明的面板容器跟普通的目錄窗格功能差別不大,並且可以有效幫助樣式改進。

設置圖層管理器

和其他容器(container)一樣,面板容器panel也使用布局管理器(Layout Manager)對添加到容器中的組件(compnent)進行定位和設置尺寸大小。

默認情況下,面板容器的布局管理器是FlowLayout(流式布局)類的一個實例,這個類對放置在容器中的空間按行進行布局(從左到右諸行排列)。在創建面板容器時,你可以輕松地使用任何其他

布局管理器通過調用setLayout方法或指定一個布局管理器。

如下是一個在創建面板容器時設置圖層管理器的例子:

JPanel p=new JPanel(new BorderLayout());

但這種方法不能用在BoxLayout(盒子布局)中,因為BoxLayout構造器需要一個預留(pre-existing)容器。如下所示:

JPanel p=new JPanel();

p.setLayout(new BoxLayout(p,BoxLayout.PAGE_AXIS));

添加控制項

向面板容器中添加組件時使用add()方法,而向add()方法中傳遞的參數決定於該面板容器使用哪個布局管理器。當所用的布局管理器是FlowLayout,BoxLayout,GridLayout,或SpringLayout時,像通常那樣向add()方法傳遞單一的參數即可,如下所示:

aFlowPanel.add(aComponent);

aFlowPanel.add(anotherComponent);

而當布局管理棗畢器為BorderLayout時,還亮沒需要提供另一個參數來指定添加到容器中控制項的位置,例如:

aBorderPanel.add(aComponent,BorderLayout.CENTER);

aBorderPanel.add(anotherComponent,BorderLayout.PAGE_END);

對於GridBagLayout布局管理器,可以使用上述任一方法,但必須以某種方式對每個組件指定GridBagConstraints,例如:

JPanel pane=new JPanel(new GridBagLayout());

GridBagConstraints c=new GridBagConstraints();

警告

Swing不是線程安全的。

此類的序列化對象與以後的Swing版本不兼容。當前序列化支持適用於短期存儲,或適用於在運行相同Swing版本的應用程序之間進行RMI(Remote Method Invocation,遠程方法調用)。

(2)java容器類擴展閱讀:

JPanel一個面板敬岩納也是一個容器JPanel Pan=new JPanel();

Pan.setLayout(null);//設置為空布局也就是自由布局

Pan.add(控制項);//添加控制項

JPanel是java圖形化界面中最常使用的容器。實例:在窗體中添加一個藍色的面板

//PanelDemo.java

import javax.swing.*;

import java.awt.*;//引入AWT包,因為要使用到顏色類

class PanelDemo{

public static void main(String[]args)throws Exception

{JFrame f=new JFrame("第一個Java窗口");

f.setSize(300,200);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.setVisible(true);

f.setResizable(false);

f.setLocationRelativeTo(null);

f.setLayout(null);//設置窗體布局為空布局

JPanel p=new JPanel();//實例化一個面板

//設置面板背景色為藍色,如果不引入AWT包,程序將出錯,可以試試看

p.setBackground(Color.BLUE);

p.setSize(100,100);//設置面板對象大小

f.getContentPane().add(p);//將面板添加到窗體中

//如果使用下面添加面板的方法,面板將布滿整個窗口,可以試試看

//f.setContentPane(p);

}

}

❸ canvas是java的容器嗎

不是。java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理虛山鏈解的多繼唯緩承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。java容器有:ArrayList、LinkedList、Vector、HashSet、LinkedHashSet、TreeSet、LinkedHashMap、TreeMap、ConcurrentHashMap、Hashtable等等。canavas並不是差孫Java的容器。

❹ java容器有哪些

容器是一個Java所編寫的程序,原先必須自行編寫程序以管理對象關系,現在容器都會自動幫您做好。下面來和小編一起詳細了解一下吧。


Java容器是一個Java所編寫的程序。

容器可以管理對象的生命周期、對象與對象之間的依賴關系。

您可以使用一個配置文件(通常是XML),在上面定義好對象的名稱、如何產生(Prototype 方式或Singleton 方式)、哪個對象產生之後必須設定成為某個對象的屬性等,在啟動容器之後,所有的對象都可以直接取用,不用編寫任何一行程序代碼來產生對象,或是建立對象與對象之間的依賴關系。

Java容器類包含List、ArrayList、Vector及map、HashTable、HashMap、Hashset。

以上就是java容器是什麼的詳細內容,更多請關注php中文網其它相關文章!

本文原創發布php中文網,轉載請註明出處,感謝您的尊重!

熱點內容
百分之五十石碳酸怎麼配置 發布:2024-11-29 13:38:56 瀏覽:971
我的世界伺服器如何裝資源包 發布:2024-11-29 13:25:48 瀏覽:18
mc伺服器的ip是什麼 發布:2024-11-29 13:23:33 瀏覽:566
python的request模塊 發布:2024-11-29 13:20:56 瀏覽:658
android編譯環境搭建 發布:2024-11-29 13:04:46 瀏覽:893
電腦怎麼登遠程伺服器 發布:2024-11-29 12:32:20 瀏覽:126
先來先服務進程調度演算法 發布:2024-11-29 12:30:12 瀏覽:629
mysql存儲過程循環表中的數據 發布:2024-11-29 12:04:02 瀏覽:600
相機存儲器一般是什麼 發布:2024-11-29 11:59:51 瀏覽:295
傳奇伺服器源碼 發布:2024-11-29 11:43:15 瀏覽:821