當前位置:首頁 » 編程語言 » javaelif

javaelif

發布時間: 2023-05-30 05:26:19

linux怎麼安裝java環境

安裝系統環境是: centos6.5 64位
一.安裝jdk
1.下載Java文件jdk-6u45-Linux-x64.bin

2.運行./jdk-6u45-linux-x64.bin

3.移動該文件到/usr/local/jdk目錄下
mv jdk-6u45-linux-x64 /usr/local/jdk

4.配置java環境變數,在文件/etc/profile最後添加以下內容:
#set java
JAVA_HOME=/usr/local/jdk;export JAVA_HOME
JRE_HOME=/usr/local/jdk/jre;export JRE_HOME
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin;export PATH
export CLASSPATH=$CLASSPATH:$PATH:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:.
5.source /etc/profile (重新激活)
6.運行java -version查看是否成功
二.安裝tomcat
1.下載tomcat文件:apache-tomcat-7.0.47.tar.gz
2.解壓tar -zxvf apache-tomcat-7.0.47.tar.gz
3.移動該文件到/usr/local下,並命名為tomcat
mv apache-tomcat-7.0.47 /usr/local/tomcat
4.到tomcat/bin目錄下setclasspath.sh文件中設置java環境,加入以下兩行即可:
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
5.設置tomcat 服務啟動
把下面內容保存到/etc/init.d/目錄,文件名為tomcat
#!/bin/bash
# /etc/rc.d/init.d/tomcat
# init script for tomcat precesses
#
# processname: tomcat by ton
# description: tomcat is a j2se server
# chkconfig: 2345 86 16
# description: Start up the Tomcat servlet engine.
set -m (有時不加這個,secureFX會話失效時,會導致tomcat自動stop)
CATALINA_HOME="/usr/local/tomcat"
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
echo -e "/atomcat: unable to locate functions lib. Cannot continue."
exit -1
fi
# running tomcat services
RETVAL=$?
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo $"Starting Tomcat"
$CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
echo $"Stopping Tomcat"
$CATALINA_HOME/bin/shutdown.sh
fi
;;
restart)
if [ -f $CATALINA_HOME/bin/startup.sh ];then
echo $"Starting Tomcat"
$CATALINA_HOME/bin/startup.sh
fi
sleep 5
if [ -f $CATALINA_HOME/bin/shutdown.sh ];then
echo $"Stopping Tomcat"
$CATALINA_HOME/bin/shutdown.sh
fi
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL

6.為該文件添加運行許可權
chmod +x /etc/init.d/tomcat
三.安裝Mysql
linux下主要是編譯安裝,需准備:cmake工具

1.yum install gcc gcc-c++ ncurses-devel perl (安裝編譯源碼所需的工具和庫)

2.下載cmake-3.0.1.tar.gz ,然後輸入命令:

tar -xzvf cmake-3.0.1.tar.gz
cd cmake-3.0.1
./bootstrap ; make ; make install

3.新增mysql用戶組和用戶命令:
groupadd mysql
useradd -r -g mysql mysql

4.新建mysql安裝目錄和存放數據目錄:
mkdir -p /usr/local/mysql
cd /usr/local/mysql
chown -R mysql:mysql . (分配許可權)

mkdir -p /var/mysqldata
cd /var/mysqldata
chown -R mysql:mysql . (分配許可權)

5.下載mysql-5.5.38.tar.gz ,解壓:
tar -zxvf mysql-5.5.38.tar.gz
cd mysql-5.5.38(先進入目錄下)

6.(先進入mysql-5.5.38目錄下)再執行cmake命令:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/var/mysqldata/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/var/mysqldata \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306

7.再編譯:
make
make install

8.復制配置文件,在/usr/local/mysql下執行:
cp support-files/my-medium.cnf /etc/my.cnf

9 初始化資料庫
執行前需賦給scripts/mysql_install_db文件執行許可權
chmod 755 scripts/mysql_install_db
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ \
--datadir=/var/mysqldata/

10. 設置mysqld的開機啟動
cp support-files/mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
chkconfig mysql on

11.MySQL配置環境變數
export PATH=/usr/local/mysql/bin:$PATH
alias mysql_start="mysqld_safe &"
alias mysql_stop="mysqladmin –u root -p shutdown"
source /etc/profile (重啟配置)

12.啟動mysql服務
/etc/init.d/mysql start

ps -ef |grep mysql (命令查看是否啟動)

13. 登陸mysql
# mysql -u root –p
14.修改MySQL用戶root的密碼
mysqladmin -u root password '123456' (更新密碼)

㈡ JAVA 查詢資料庫 out of memory報錯問題

jvm與tomcat內存設置

linix系統平台大並發量下tomcat5.5優化策略(2009-03-11 12:45:24)
標簽:linux tomcat5.5 優化策略 it 分類:java

在部署系統後,為了增加系統並發量,系統響應速度,做了一些工作;遂整理如下。

1、修改server.xml文件

<Connector port="80" protocol="HTTP/1.1"
maxHttpHeaderSize="8192"
maxThreads="1000" minSpareThreads="75" maxSpareThreads="300"
enableLookups="false" redirectPort="8443" acceptCount="200"
connectionTimeout="50000" disableUploadTimeout="true"/>
主要修改了maxThreads、acceptCount。

引用
Google資料說「如果要加大並發連接數,應同時加大這兩個參數。web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。」

2、增加tomcat啟動初始內存設置;catalina.sh – 增加了參數內存設置

內存為2G情況:

JAVA_OPTS="-server -Xms1500M -Xmx1500M -Xss256K -Djava.awt.headless=true -XX:PermSize=64M -XX:MaxPermSize=128m"

(補充:-Dfile.encoding=utf8 加入這個,是設置文件寫入的編碼方式)

引用

Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同
堆內存分配
JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。默認空餘堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減少堆直到-Xms的最小限制。因此伺服器一般設置-Xms、-Xmx相等以避免在每次GC 後調整堆的大小。
非堆內存分配
JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。
JVM內存限制(最大值)
首先JVM內存限制於實際的最大物理內存,假設物理內存無限大的話,JVM內存的最大值跟操作系統有很大的關系。簡單的說就32位處理器雖然可控內存空間有4GB,但是具體的操作系統會給一個限制,這個限制一般是2GB-3GB(一般來說Windows系統下為1.5G-2G,Linux系統下為2G-3G),而64bit以上的處理器就不會有限制了。

-Djava.awt.headless=true

Java在圖形處理時調用了本地的圖形處理庫。在利用Java作圖形處理(比如:圖片縮放,圖片簽名,生成報表)時,如果運行在windows上不會出問題。如果將程序移植到Linux/Unix上的時候有可能出現圖形不能顯示的錯誤。提示信息:"Can't connect to X11 window server"這是由於Linux的圖形處理需要一個X Server伺服器。解決辦法就是設置參數。

Xss:每個線程的Stack大小。Stack的大小限制著線程的數量。如果Stack過大就好導致內存溢漏。-Xss參數決定Stack大小,例如-Xss1024K。如果Stack太小,也會導致Stack溢漏。

Tomcat 怎麼增加內存?

轉載修改方法開始
打開bin目錄,找到catalina.bat(windows系統)或catalina.sh(linux系統),在前邊一堆的#號注釋結束之後增加如下配置
windows的:
set CATALINA_OPTS="-server -Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m"
linux的:
JAVA_OPTS=='-server -Xms256m -Xmx256m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m'
轉載修改方法 結束

懸賞:3 發布時間:2008-08-14 提問人:rihoonet (初級程序員)
< > 獵頭職位: 北京: 北京知名手機網站誠聘java高級程序員
報錯:java.lang.OutOfMemoryError: Java heap space
TOMCAT版本 5.5.23
曾試過的方法。
/tomcat/bin/catalina.bat 加上下面的命令:
set JAVA_OPTS=-Xms32m -Xmx1024m --這樣啟動不了了。。奇怪。

採納的答案
2008-08-14 小瘋子 (資深程序員)
Java代碼
set JAVA_OPTS=-Xms32m -Xmx1024m %JAVA_OPTS%

set JAVA_OPTS=-Xms32m -Xmx1024m %JAVA_OPTS%, 要引用原來的JAVA_OPTS, 不然把原來的覆蓋了.

增加Tomcat虛擬內存大小

--------------------------------------------------------------------------------

JVM的大小設置(unix平台tomcat):調整 $ CATALINA _HOME \bin\catalina.sh文件。
elif [ "$1" = "start" ] ; then
shift
touch "$CATALINA_BASE"/logs/catalina.out
if [ "$1" = "-security" ] ; then
echo "Using Security Manager"
shift
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
else
"$_RUNJAVA" $JAVA_OPTS -Xms1024m -Xmx1024m $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
fi
注意紅色部分–Xms1024m –Xmx1024m,這句話表示jvm的最小值為1024M,最大1024M,這個部分的調優需要根據web伺服器主機硬體配置不同而調整,初始化堆的大小執行了虛擬機在啟動時向系統申請的內存的大小。一般而言,這個參數不重要。但是有的應用程序在大負載的情況下會急劇地佔用更多的內存,此時這個參數就是顯得非常重要,如果虛擬機啟動時設置使用的內存比較小而在這種情況下有許多對象進行初始化,虛擬機就必須重復地增加內存來滿足使用。由於這種原因,我們一般把-Xms和-Xmx設為一樣大,而堆的最大值受限於系統使用的物理內存。一般使用數據量較大的應用程序會使用持久對象,內存使用有可能迅速地增長。當應用程序需要的內存超出堆的最大值時虛擬機就會提示內存溢出,並且導致應用服務崩潰。因此一般建議堆的最大值設置為可用內存的最大值的80%。

JVM的大小設置(windows平台tomcat):
1)停掉現在的Tomcat服務(假設已經啟動)
net stop "Apache Tomcat 4.1"
2)卸載Tomcat服務
tomcat.exe -uninstall "Apache Tomcat 4.1"
3)重新配置啟動參數
tomcat.exe -install "Apache Tomcat 4.1" "%JAVA_HOME%\jre\bin\server\jvm.dll" -Djava.class.path="%CATALINA_HOME%\bin\bootstrap.jar;%JAVA_HOME%\lib\tools.jar" -Dcatalina.home="%CATALINA_HOME%" -Xrs -Xmx512m -Xms512m -start org.apache.catalina.startup.Bootstrap -params start -stop org.apache.catalina.startup.Bootstrap -params stop -out "%CATALINA_HOME%\logs\stderr.log"
4)在服務中重新啟動Tomcat服務,完成配置。
其中紅色部分也是調整jvm的大小的地方。調整原則同上。

另外:查看jvm的方法:$webapp\cache.jsp。需要提醒的是,通過這個頁面能看出大概的jvm使用數量大小,通常實際的jvm大小要比頁面顯示的偏大些。

-----------------------------------------------------------------------------------
秦敏:rem Set JVM Memery Size
set JAVA_OPTS=-Xms800m -Xmx1024m
-----------------------------------------------------------------------------------

windows中大家都知道,JAVA程序啟動時都會JVM都會分配一個初始內存和最大內存給這個應用程序。這個初始內存和最大內存在一定程度都會影響程序的性能。比如說在應用程序用到最大內存的時候,JVM是要先去做垃圾回收的動作,釋放被佔用的一些內存。
所以想調整Tomcat的啟動時初始內存和最大內存就需要向JVM聲明,一般的JAVA程序在運行都可以通過中-Xms -Xmx來調整應用程序的初始內存和最大內存:
如:java -Xms64m -Xmx128m a.jar.
tomcat的啟動程序是包裝過的,不能直接使用java -X..... tomcat.*來改變內存的設置。在Tomcat在改變這個設置
有兩種方法:
1. 就需要在環境變數中加上TOMCAT_OPTS, CATALINA_OPTS兩個屬性,
如 SET CATALINA_OPTS= -Xms64m -Xmx512m;
ms是最小的,mx是最大,64m, 512m分別是指內存的容量.
2. 修改Catalina.bat文件
在166行「rem Execute Java with the applicable properties 」以下每行
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 中的%CATALINA_OPTS% 替換成-Xms64m -Xmx512m(把四行內的%CATALINA_OPTS%都替換掉,包括兩邊的%)

___________________________________________________________________________________________
Tomcat本身不能直接在計算機上運行,需要依賴於硬體基礎之上的操作系統和一個java虛擬機。您可以選擇自己的需要選擇不同的操作系統和對應的JDK的版本(只要是符合Sun發布的Java規范的),但我們推薦您使用Sun公司發布的JDK。確保您所使用的版本是最新的,因為Sun公司和其它一些公司一直在為提高性能而對java虛擬機做一些升級改進。一些報告顯示JDK1.4在性能上比JDK1.3提高了將近10%到20%。

可以給Java虛擬機設置使用的內存,但是如果你的選擇不對的話,虛擬機不會補償。可通過命令行的方式改變虛擬機使用內存的大小。如下表所示有兩個參數用來設置虛擬機使用內存的大小。

參數

描述

-Xms

JVM初始化堆的大小

-Xmx

JVM堆的最大值

這兩個值的大小一般根據需要進行設置。初始化堆的大小執行了虛擬機在啟動時向系統申請的內存的大小。一般而言,這個參數不重要。但是有的應用程序在大負載的情況下會急劇地佔用更多的內存,此時這個參數就是顯得非常重要,如果虛擬機啟動時設置使用的內存比較小而在這種情況下有許多對象進行初始化,虛擬機就必須重復地增加內存來滿足使用。由於這種原因,我們一般把-Xms和-Xmx設為一樣大,而堆的最大值受限於系統使用的物理內存。一般使用數據量較大的應用程序會使用持久對象,內存使用有可能迅速地增長。當應用程序需要的內存超出堆的最大值時虛擬機就會提示內存溢出,並且導致應用服務崩潰。因此一般建議堆的最大值設置為可用內存的最大值的80%。

Tomcat默認可以使用的內存為128MB,在較大型的應用項目中,這點內存是不夠的,需要調大。

Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh的前面,增加如下設置:

JAVA_OPTS='-Xms【初始化內存大小】 -Xmx【可以使用的最大內存】'

需要把這個兩個參數值調大。例如:

JAVA_OPTS='-Xms256m -Xmx512m'

表示初始化內存為256MB,可以使用的最大內存為512MB。

另外需要考慮的是Java提供的垃圾回收機制。虛擬機的堆大小決定了虛擬機花費在收集垃圾上的時間和頻度。收集垃圾可以接受的速度與應用有關,應該通過分析實際的垃圾收集的時間和頻率來調整。如果堆的大小很大,那麼完全垃圾收集就會很慢,但是頻度會降低。如果你把堆的大小和內存的需要一致,完全收集就很快,但是會更加頻繁。調整堆大小的的目的是最小化垃圾收集的時間,以在特定的時間內最大化處理客戶的請求。在基準測試的時候,為保證最好的性能,要把堆的大小設大,保證垃圾收集不在整個基準測試的過程中出現。

如果系統花費很多的時間收集垃圾,請減小堆大小。一次完全的垃圾收集應該不超過 3-5 秒。如果垃圾收集成為瓶頸,那麼需要指定代的大小,檢查垃圾收集的詳細輸出,研究 垃圾收集參數對性能的影響。一般說來,你應該使用物理內存的 80% 作為堆大小。當增加處理器時,記得增加內存,因為分配可以並行進行,而垃圾收集不是並行的。

Tomcat 5常用優化和配置

1、JDK內存優化:

Tomcat默認可以使用的內存為128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下設置:

JAVA_OPTS='-Xms[初始化內存大小] -Xmx[可以使用的最大內存]

一般說來,你應該使用物理內存的 80% 作為堆大小。

2、連接器優化:

在tomcat配置文件server.xml中的配置中,和連接數相關的參數有:

maxThreads:

Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。默認值200。

acceptCount:

指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。默認值10。

minSpareThreads:

Tomcat初始化時創建的線程數。默認值4。

maxSpareThreads:

一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。默認值50。

enableLookups:

是否反查域名,默認值為true。為了提高處理能力,應設置為false

connnectionTimeout:

網路連接超時,默認值60000,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。

maxKeepAliveRequests:

保持請求數量,默認值100。

bufferSize:

輸入流緩沖大小,默認值2048 bytes。

compression:

壓縮傳輸,取值on/off/force,默認值off。

其中和最大連接數相關的參數為maxThreads和acceptCount。如果要加大並發連接數,應同時加大這兩個參數。web server允許的最大連接數還受制於操作系統的內核參數設置,通常Windows是2000個左右,Linux是1000個左右。

3、tomcat中如何禁止和允許列目錄下的文件

在{tomcat_home}/conf/web.xml中,把listings參數設置成false即可,如下:

...

listings
false

...

4、tomcat中如何禁止和允許主機或IP地址訪問

...
allow="*.mycompany.com,www.yourcompany.com"/>
deny="192.168.1.*"/>
...

這是我們伺服器的配置,具體文件不能給你,因為涉及到公司機密,所以那一行我給你,我拷貝下來了

JAVA_OPTS='-server -Xms512m -Xmx768m -XX:NewSize=128m -XX:MaxNewSize=192m -XX:SurvivorRatio=8'

python線程怎麼銷毀

【Python】線程的創建、執行、互斥、同步、銷毀
還是《【Java】利用synchronized(this)完成線程的臨界區》(點擊打開鏈接)、《【Linux】線程互斥》(點擊打開鏈接)、《【C++】Windows線程的創建、執行、互斥、同步、銷毀》(點擊打開鏈接)中的設置多個線程對一個ticket進行自減操作,用來說明Python中多線程的運用,涉及的創建、執行、互斥、同步、銷毀問題。
運行結果如下,還是差不多,運行三次,每次的運行結果,每個線程最終的得票結果是不同的,但是4個線程最終「得票」的總和為 ticket 最初設置的值為100000,證明這4個線程成功實現了互斥。
雖然每次運行結果是不同,但是可以看得出每次運行結果大抵上是平均的。貌似Python對線程作系統資源的處理,比Java要好。
然而,Python總要實現多線程,代碼並不像想像中簡單,具體如下:
[python] view plain print?在CODE上查看代碼片派生到我的代碼片
# -*-coding:utf-8-*-
import threading;
mutex_lock = threading.RLock(); # 互斥鎖的聲明
ticket = 100000; # 總票數
# 用於統計各個線程的得票數
ticket_for_thread1 = 0;
ticket_for_thread2 = 0;
ticket_for_thread3 = 0;
ticket_for_thread4 = 0;
class myThread(threading.Thread): # 線程處理函數
def __init__(self, name):
threading.Thread.__init__(self); # 線程類必須的初始化
self.thread_name = name; # 將傳遞過來的name構造到類中的name
def run(self):
# 聲明在類中使用全局變數
global mutex_lock;
global ticket;
global ticket_for_thread1;
global ticket_for_thread2;
global ticket_for_thread3;
global ticket_for_thread4;
while 1:
mutex_lock.acquire(); # 臨界區開始,互斥的開始
# 僅能有一個線程↓↓↓↓↓↓↓↓↓↓↓↓
if ticket > 0:
ticket -= 1;
# 統計哪到線程拿到票
print "%s搶到了票!票還剩餘:%d。" % (self.thread_name, ticket);
if self.thread_name == "線程1":
ticket_for_thread1 += 1;
elif self.thread_name == "線程2":
ticket_for_thread2 += 1;
elif self.thread_name == "線程3":
ticket_for_thread3 += 1;
elif self.thread_name == "線程4":
ticket_for_thread4 += 1;
else:
break;
# 僅能有一個線程↑↑↑↑↑↑↑↑↑↑↑↑
mutex_lock.release(); # 臨界區結束,互斥的結束
mutex_lock.release(); # python在線程死亡的時候,不會清理已存在在線程函數的互斥鎖,必須程序猿自己主動清理
print "%s被銷毀了!" % (self.thread_name);
# 初始化線程
thread1 = myThread("線程1");
thread2 = myThread("線程2");
thread3 = myThread("線程3");
thread4 = myThread("線程4");
# 開啟線程
thread1.start();
thread2.start();
thread3.start();
thread4.start();
# 等到線程1、2、3、4結束才進行以下的代碼(同步)
thread1.join();
thread2.join();
thread3.join();
thread4.join();
print "票都搶光了,大家都散了吧!";
print "=========得票統計=========";
print "線程1:%d張" % (ticket_for_thread1);
print "線程2:%d張" % (ticket_for_thread2);
print "線程3:%d張" % (ticket_for_thread3);
print "線程4:%d張" % (ticket_for_thread4);
1、從上面的代碼可以看出,在Python2.7中要使用線程必須使用threading而不是古老的thread模塊。
如果你像網上部分遺留依舊的文章一樣,在Python2.7中使用thread來實現線程,至少在Eclipse的Pydev中會報錯:sys.excepthook is missing,lost sys.stderr如下圖所示:
所以必須使用現時Python建議使用的threading。
2、與其它編程語言類似,聲明一個互斥鎖,與一系列的得票數。之後,與Java同樣地,Python實現線程的函數,是要重寫一個類。而類中使用全局變數,則與同為腳本語言的php一樣《【php】global的使用與php的全局變數》(點擊打開鏈接),要用global才能使用這個全局變數,而不是C/C++可以直接使用。
3、需要注意的,Python需要在線程跑完class myThread(threading.Thread)這個類的def run(self)方法之前,必須自己手動清理互斥鎖,它不會像其它編程語言那樣,說線程跑完def run(self)方法,會自然而然地清理該線程被創建的互斥鎖。如果沒有最後一句手動清理互斥鎖,則會造成死鎖。
4、最後與其它編程語言一樣了,利用線程的join方法可以等待這個線程跑完def run(self)方法中的所有代碼,才執行之後的代碼,實現同步。否則主函數中的代碼,相當於與父線程。主函數開啟的線程,相當於其子線程,互不影響的。

熱點內容
機械硬碟的存儲速度優於固態硬碟 發布:2024-04-26 16:02:13 瀏覽:117
訊捷壓縮器 發布:2024-04-26 16:02:08 瀏覽:268
安卓藍牙耳機丟了如何找回 發布:2024-04-26 15:36:13 瀏覽:540
win7最近打開文件夾 發布:2024-04-26 15:23:00 瀏覽:555
演算法筆談 發布:2024-04-26 15:14:34 瀏覽:284
技算計編程 發布:2024-04-26 14:43:42 瀏覽:140
開普票密碼區和備注是什麼意思 發布:2024-04-26 14:43:31 瀏覽:852
吃雞安卓和蘋果如何加好友 發布:2024-04-26 14:39:10 瀏覽:836
centos編譯命令 發布:2024-04-26 14:18:04 瀏覽:654
網路編程畢設 發布:2024-04-26 14:13:10 瀏覽:208