
package chapter2public class ThreadFlag extends Thread { public volatile boolean exit = falsepublic void run() { while (!exit)} public static void main(String[] args) throws Exception { ThreadFlag thread = new ThreadFlag()thread.start()sleep(5000)// 主线程延迟5秒 thread.exit = true// 终止线程thread thread.join()System.out.println("线程退出!")} }
在上面代码中定义了一个退出标志exit,当exit为true时,while循环退出,exit的默认值为false.在定义exit时,使用了一个Java关键字volatile,这个关键字的目的是使exit同步,也就是说在同一时刻只能由一个线程来修改exit的值, 2. 使用stop方法终止线程 使用stop方法可以强行终止正在运行或挂起的线程。我们可以使用如下的代码来终止线程: thread.stop()虽然使用上面的代码可以终止线程,但使用stop方法是很危险的,就象突然关闭计算机电源,而不是按正常程序关机一样,可能会产生不可预料的结果,因此,并不推荐使用stop方法来终止线程。 3. 使用interrupt方法终止线程 使用interrupt方法来终端线程可分为两种情况: (1)线程处于阻塞状态,如使用了sleep方法。 (2)使用while(!isInterrupted()){……}来判断线程是否被中断。 在第一种情况下使用interrupt方法,sleep方法将抛出一个InterruptedException例外,而在第二种情况下线程将直接退出。下面的代码演示了在第一种情况下使用interrupt方法。
package chapter2public class ThreadInterrupt extends Thread { public void run() { try { sleep(50000)// 延迟50秒 } catch (InterruptedException e) { System.out.println(e.getMessage())} } public static void main(String[] args) throws Exception { Thread thread = new ThreadInterrupt()thread.start()System.out.println("在50秒之内按任意键中断线程!")System.in.read()thread.interrupt()thread.join()System.out.println("线程已经退出!")} }
上面代码的运行结果如下: 在50秒之内按任意键中断线程! sleep interrupted 线程已经退出! 在调用interrupt方法后, sleep方法抛出异常,然后输出错误信息:sleep interrupted. 注意:在Thread类中有两个方法可以判断线程是否通过interrupt方法被终止。一个是静态的方法interrupted(),一个是非静态的方法isInterrupted(),这两个方法的区别是interrupted用来判断当前线是否被中断,而isInterrupted可以用来判断其他线程是否被中断。因此,while (!isInterrupted())也可以换成while (!Thread.interrupted())。
1.首先在该链接处下载 Qt library和 Qt creater(http://qt-project.org/downloads),我使用的 Qt library是qt-win-opensource-4.8.5-mingw.exe,
Qt creater是qt-creator-windows-opensource-2.7.2.exe
安装QT之前,还需要下载MinGW-gcc,我使用的是MinGW-gcc440_1.zip;
http://ishare.iask.sina.com.cn/f/34637805.html这儿可以免费下载;
2.做好了所有准备后,我们开始安装;
(1).在安装Qt之前,我们简单了解下MinGW。(http://baike.baidu.com/view/98554.htm)
MinGW是一个可以自由使用和自由发布的Windows特定头文件和使用GUN工具集导入库的集合,允许在GUN/Linux和我Windows平台生成本地的Windows程序而不需要第三方C运行时库。
我们在安装Qt之前,需要在系统中存放这个MinGW工具库。这里,我存放的位置是 D:\Install software;(当然,你完全可以存放在其他地方,只要你自己记住位置就可以了),因为下面的安装过程需要用到这个库。
(2).接下来,开始安装Qt library。直接双击exe文件就可以了,然后根据提示进行安装,这里我选择安装的位置是D:\QT;安装过程中有个地方需要填入MinGW的位置,该位置就是上一步中MinGW存放的位置,我这里的位置是D:\Install software\mingw;然后很轻松就完成安装;
(3).然后,为了以后能更方便的使用Qt,我们需要先编译一下。在开始菜单中,找到Qt by Digia v4.8.5 (MinGW OpenSource)这个文件夹,打开,里面会有Qt 4.8.5(Build Debug Libraries)的一个批处理文件,点击后会进入windows下的DOS界面,然后根据里面的提示,根据自己的选择来编译这个库。很简单,就2步吧。不过这个时间有点长,因为库比较大,我电脑比较慢,差不多编译了快4个小时,编译时就和linux下的命令行界面一样的,一行一行的指令往上飞。
(4).编译完成后,我们需要配置系统环境变量。右键单击我的电脑,选择属性,进入高级系统设置,单击右下角的环境变量,在环境变量path中添加 D:\QT\binD:\Install software\mingw\bin 然后再添加两个环境变量
QTDIR=D:\QT(编译时的默认目录,这个可以随意设置,用来存放工程文件的)
QMAKESPEC=win32-g++
到这里,windows下的Qt开发环境基本就配置好了。
下面,我们在D:\QT的目录下创建一个project的文件夹,再在project中创建hello文件夹,再在hello文件夹中创建一个cpp文件,写入一下测试程序:
#include <QApplication>//包含QApplication头文件
#include <QPushButton>//包含QPushButton头文件
int main(int argc, char *argv[]) // 还是标准的main函数
{
QApplication app(argc, argv) // 构造应用,同MFC中的WinApp
QPushButton hello("Hello world!")// 构造PushButton
hello.resize(100, 30) // 设置按钮大小
hello.show() // 显示按钮
return app.exec()// 执行应用,同MFC中的Run
}
然后打开开始菜单中的 Qt 4.8.5 Command Prompt ,通过cd 命令找到cpp所在的路径地址,再输入
qmake -project
make
最后,编译成功通过,会在hello文件夹下的release文件夹中生成一个.exe文件,双击执行即可。也可以在DOS下执行,进入文件夹目录,直接输入:hello.exe 即可;这里,我还列出了一些常用指令
dir 查看文件列表,同linux下的“ls”
cd 改变文件目录 “cd ..”返回到上一层 “cd \”到所在磁盘,一般为c:
del 删除一个文件
mkdir创建一个文件夹
rmdir 删除一个空文件夹
notepad xx.cpp 用记事本打开(如果没有则是创建)xx.cpp文件 也可以是.h文件
3.如果觉得使用命令行不习惯,那么就可以安装Qt creater,这是一个图形化的设计编译界面,直接使用EXE文件安装。安装完成后,打开软件,单击工具栏,单击选项按钮,进入下面的页面:
单击构建和运行(这是新版本,老版本是“Qt4”),就是上面这个页面,将Qt版本中的qmake路径手动设置为Qt安装路径中的bin文件夹下的qmake.exe文件即可(添加,确定);
这时你可以在creater中添加hello的项目,看看调试时候能够通过,能否正常运行,如果出现调试不通过,gbd异常中断,那么你还需要下载gdb。因为在之前的Qt Creator中,是以一个Qt SDK的整体来提供的,里面就包括了MinGW和调试器,而且也无需配置,现在的新版本都是分散安装的,所以就需要自己单独再找找了。网上的一个说法是2.5以上的版本必须使用7.2 IIRC版以上的GDB,需要需要自己单独下载,这里我找到两个下载地址。
http://qt-project.org/wiki/QtCreatorBuildGdb
下载了Downloads中的 GDB 7.5 binaries,文件名为qtcreator-gdb-7.4-MINGW32_NT-6.1-i686.tar.gz,直接用winRAR解压,文件夹内容如下:
然后我们回到刚才的配置页面,选择配置套件(Kit),选择手动设置(桌面默认),如下所示:
将调试器改为我们刚刚下载的gdb中的gdb-686-pc-mingw32.exe,最后确定即可,编译顺利通过。
到此,所有的工作已经完成,现在可以放心使用Qt开发环境了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)