当前位置:首页 » 编程语言 » 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-05-07 00:14:41 浏览:607
木头创意解压 发布:2024-05-07 00:11:55 浏览:215
密码都能设置什么 发布:2024-05-07 00:02:30 浏览:741
兰州大学网络服务器ip地址 发布:2024-05-06 23:44:09 浏览:429
安卓手机为什么这么香 发布:2024-05-06 23:33:19 浏览:623
安卓微信深色模式是什么意思 发布:2024-05-06 23:14:41 浏览:686
脚本样本 发布:2024-05-06 23:03:41 浏览:630
sqlserver导出 发布:2024-05-06 23:02:16 浏览:808
phpredis操作 发布:2024-05-06 22:56:24 浏览:584
查看qq加密相册软件 发布:2024-05-06 22:45:36 浏览:619