当前位置:文档之家› VB多线程的几种实现方法

VB多线程的几种实现方法

VB多线程的几种实现方法
VB多线程的几种实现方法

VB多线程的几种实现方法2009-11-23 04:18先说多线程:

方法1 :CreateThread

不用多说,万变不离其宗,这是Win32 内创建线程的唯一系统方法,以下介绍的多线程创建方式虽然不直接接触这个Win32 APi,但系统也是通过他创建的。

方法2 :TimerSetEvent

这个函数是Win32 系统的一个高精度计时器函数,通过调用这个函数,系统会创建一个新的线程,让Timer回调函数中的代码运行在这个新线程中。

方法3 :SHCreateThread

很多人应该没见过这个函数,这是shlwapi.dll 的一个导出函数,这个函数看字面也能理解是个创建多线程的函数,而且。。。他是基于对象操作的多线程函数,也就是说他能够稳定的运行一些用上面2种方法创建,但不能稳定运行的代码。至少这个函数在IDE 的环境下表现的中规中矩!使用方法可查API-GUIDE

方法4 :想起来了, CreateRemoteThread

创建远程线程,经测试一点也不稳定,根本没法说下去了,还不如直接调用CreateThread

但,做为一种线程的创建方法,还是希望能够熟悉一下,如果不用VB写代码,要写跨进程线程,这是一个简单易行的办法,否则只能继续SetWindowHook了,熟悉汇编指令的还可以远程分配内存写硬编码执行

方法5 :简单说下ActiveX 方式的多线程

论坛里面有用这种方法实现的稳定多线程,代码虽好,但我却不会用,在倡导绿色软件的今天,为了一个多线程,而注册表里面又要多点xx,不好。。而且卸载麻烦。用ActiveX 创建线程与其他方式创建的线程最重要的地方要主义,任何VB函数的调用最好都建立在新线程中新初始化的对象基础上执行,不要跨对象调用,而ActiveX 的安全线程本身也正是利用了这点,不知道研究ActiveX 的老大们有没注意,利用他特性实现的多线程,是初始化的一个新的线程,而这个线程中初始化的对象则是整个工程。很大的资源浪费,而且有时候还不好控制,不是你想要的效果。总之一句话,新线程中要自己初始化新的对象而且最好不要用实例继承

方法6 :我的想法

记得以前CSDN 中有人做过一个代码,通过函数地址抓取函数内的机器码,如果能够知道VB何时已将代码进行了机器码的转换,然后抓取这些代码放到数组中执行,那应该是非常稳定的。这纯属娱乐的想法,虽然能够实现,但有点过分了,除非是VB 多线程的狂热者,

否则我想不该花太多力气研究这个。

方法7 :异步

论坛中很多人问,timer控件的事件中代码是怎么运行的。其实这就是异步,对于单核CPU 多线程的执行方式与异步简直无异。而最重要的是,VB 中用异步实现代码执行是安全的。其实异步从大家开始Win GUI编程时就开始接触了。例如窗体的消息循环中就经常会以异步的方式执行,1个消息正在执行的时候,另外的消息又被执行了,也许这样说会觉得有些乱,稍侯解释。这个帖子内容要说的内容就完了,下一个帖子里面有个我忘了什么时候写的代码,以那个代码为例,介绍应用异步。

vb代码大全

用VB5实现窗口图象缩放、滚动技巧 成都理工学院计算机工程系 洪志全 ---- Visual Basic 是Windows 平台中最常用的应用软件开发语言, 窗口图像缩放、滚动是图像处理、多媒体数据库等应用软件开发中的基本功能。本文将介绍如何用VB 5.0 实现地窗口图像缩放和滚动技巧, 供读者在各种语言系统开发中参考。 ---- 一、获取图像 ---- 本文所介绍的图像缩放并没有对真正的图像进行缩放, 而是复制一幅窗口图像的真实画面, 对这个窗口图像附本进行局部缩放和滚动, 获取窗口图像可使用Windows 的API 函数来实现。具体来说, 实现窗口图像缩放、滚动需要用GetDeskTopWindow() 函数获取桌面窗口句柄, 再通过GetDC() 函数转换为描述表句柄, 则用BitBlt() 函数把桌面图像复制到任意图形容器控件中, 桌面图像复制完成后, 再用ReleaseDC 释放窗口描述表, 各API 函数的具体使用方法参见本文的例子程序。 ---- 本文所用的API 函数包含在WIN95/98 的GDI32.DLL 和USER32.DLL 动态链接库中, 在使用时可通过VB5.0 的TEXT VIEWER 复制到所开发的应用程序中。 ---- 二、图像缩放 ---- 图像缩放显示的基本原理就是把原图像的一部分缩放后再送入窗口的图形容器控件中, 在VB 中可用内部命令PaintPicture 来进行, 语法格式为: PaintPicture Pic,DestX,DestY,DestWidth, DestHeight,ScrX,ScrY,ScrWidth,ScrHeight ---- 其中,Pic 为图片对象, 如图形控件对象等; DestX,DestY为目标图像起始坐标; DestWidth,DestHeight为目标图像幅面尺寸; ScrX,ScrY为源图像起始坐标; ScrWidth,ScrHeight为源图像剪裁尺寸。 ---- 该命令就是把一个源图像资源任意复制到指定的区域, 其功能相当于API 函数的BitBlt, 但使用更简单, 若复制时改变源图像的ScrWidth,ScrHeight 或目标图像的DestWidth,DestHeight 可使复制后的图像尺寸发生变化, 实现窗口图像的缩放显示。若ScrWidth,ScrHeight 或

Java多线程习题

Java 多线程习题 知识点: Java 的多线程,实现多线程的两种方法,线程控制、调度方法 一、选择题 1、什么原因可导致线程停止执行。 ( ) A. 线程调用了wait()方法; B. 线程调用了yield()方法; C. 线程调用了pause()方法; D. 线程调用了sleep() 方法。 2、哪个方法是实现Runnable 接口所需的? A. wait() B . run() C . stop() D . update() E . resume() 3、以下代码的调试结果为?( ) public class Bground extends Thread{ public static void main(String argv[]){ Bground b = new Bground(); b.run(); } public void start(){ for (int i = 0; i <10; i++){ System.out.println("Value of i = " + i); } } } A. 编译错误,没有定义线程的run方法; B. 由于没有定义线程的run方法,而出现运行错误; C. 编译通过,运行输出values 0 to 9 D. 编译通过,运行无输出 4、有关线程的叙述正确的有: ( ) A. 通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定。 B. 可以获得对任何对象的互斥锁定。 C. 线程通过调用对象的synchronized 方法可取得对象的互斥锁定。 D. 线程调度算法是平台独立的。 5、以下哪个是线程类的方法? A. yield() B. sleep(long msec) C. go() D. stop() 6、以下哪个最准确描述synchronized 关键字?

java多线程试题答案

多线程 一.选择题 1.下列说法中错误地一项是() A.线程就是程序.线程是一个程序地单个执行流 B.多线程是指一个程序地多个执行流.多线程用于实现并发 2.下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态() A.等待阴塞状态下地线程被()唤 B.等待阻塞状态下地纯种被()中断 C.等待时间到 D.等待阻塞状态下地线程调用()方法 3.下列哪个方法可以使线程从运行状态进入其他阻塞状态() A. 4.下列说法中错误地一项是() A.一个线程是一个类地实例 B.线程从传递给纯种地实例()方法开始执行 C.线程操作地数据来自实例 D.新建地线程调用()方法就能立即进入运行状态 5.下列关于类提供地线程控制方法地说法中,错误地一项是() A.在线程中执行线程地()方法,则线程等待直到执行完成 B.线程通过调用()方法来中断其阻塞状态 C.若线程调用方法()返回值为,则说明正在执行中 D.()方法返回当前线程地引用 6.下列说法中,错误地一项是() A.对象锁在()语句执行完之后由持有它地线程返还 B.对象锁在()语句中出现异常时由持有它地线程返还 C.当持有锁地线程调用了该对象地()方法时,线程将释放其持有地锁 D.当持有锁地线程调用了该对象地构造方法时,线程将释放其持有地锁 7.下面地哪一个关键字通常用来对对象地加锁,从而使得对对象地访问是排他地 A. 二.填空题 . 在操作系统中,被称做轻型地进程是线程 . 多线程程序设计地含义是可以将一个程序任务分成几个并行地任务 . 在程序中,()方法地实现有两种方式:实现接口和继承类.多个线程并发执行时,各个线程中语句地执行顺序是确定地,但是线程之间地相对执行顺序是不确定地 中地对象锁是一种独占地排他锁 .程序中可能出现一种情况:多个线种互相等待对方持有地锁,而在得到对方地锁之前都不会释放自己地锁,这就是死锁b5E2R。 .线程地优先级是在类地常数和之间地一个值 .处于新建状态地线程可以使用地控制方法是()和(). .一个进程可以包含多个线程 三.简答题

vb常见题型汇总代码

1.Private Sub Command1_Click() Dim r As Double, c As Double, s As Double Dim pi As Double pi = 3.1415926 r = Val(Text1.Text) c = pi * 2 * r s = pi * r * r Label3.Caption = "圆的周长为" + Str(c) + "厘米" Label4.Caption = "圆的面积为" + Str(s) + "平方厘米" End Sub 2.(5秒5分倒计时) Dim n As Integer Private Sub Command1_Click() If Option1.Value Then n = 5 If Option2.Value Then n = 300 Timer1.Enabled = True Frame1.Enabled = False Command1.Enabled = False End Sub Private Sub Form_Load() Timer1.Enabled = False Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer() n = n - 1 Text1.Text = Str(n \ 60) & "分" & Str(n Mod 60) & "秒" If n <= 0 Then Timer1.Enabled = False Frame1.Enabled = True Text1.Text = "时间到" End If End Sub 3.心想事成 Dim x As Integer Private Sub Command1_Click() Timer1.Enabled = True If Command1.Caption = "开始" Then Timer1.Enabled = True Command1.Caption = "停止" Else Timer1.Enabled = False Command1.Caption = "开始" End If End Sub Private Sub Form_Load() Timer1.Interval = 100 x = -100 End Sub Private Sub Timer1_Timer() Label1.Left = Label1.Left + x If Label1.Left <= 0 Then x = 100 If Label1.Left >= Form1.ScaleWidth - Label1.Width Then x = -100 End Sub 4.我的调色板(滚动条) Private Sub Command1_Click() Label5.ForeColor = Label4.BackColor End Sub Private Sub HScroll1_Change() Label4.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value) End Sub Private Sub HScroll2_Change() Label4.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value) End Sub Private Sub HScroll3_Change() Label4.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value) End Sub 5.字形字体颜色(复选框,单选)Private Sub Check1_Click() If Check1.Value = 1 Then Text1.FontBold = True Else Text1.FontBold = False End If End Sub Private Sub Check2_Click() If Check1.Value = 1 Then

VB键盘常量大全 256个虚拟键码

Public Const VK_LBUTTON = &H1 Public Const VK_RBUTTON = &H2 Public Const VK_CANCEL = &H3 Public Const VK_MBUTTON = &H4 Public Const VK_BACK = &H8 Public Const VK_TAB = &H9 Public Const VK_CLEAR = &HC Public Const VK_RETURN = &HD Public Const VK_SHIFT = &H10 Public Const VK_CONTROL = &H11 Public Const VK_MENU = &H12 Public Const VK_PAUSE = &H13 Public Const VK_CAPITAL = &H14 Public Const VK_ESCAPE = &H1B Public Const VK_SPACE = &H20 Public Const VK_PRIOR = &H21 Public Const VK_NEXT = &H22 Public Const VK_END = &H23 Public Const VK_HOME = &H24 Public Const VK_LEFT = &H25 Public Const VK_UP = &H26 Public Const VK_RIGHT = &H27 Public Const VK_DOWN = &H28 Public Const VK_Select = &H29 Public Const VK_PRINT = &H2A Public Const VK_EXECUTE = &H2B Public Const VK_SNAPSHOT = &H2C Public Const VK_Insert = &H2D Public Const VK_Delete = &H2E Public Const VK_HELP = &H2F Public Const VK_0 = &H30 Public Const VK_1 = &H31 Public Const VK_2 = &H32 Public Const VK_3 = &H33 Public Const VK_4 = &H34 Public Const VK_5 = &H35 Public Const VK_6 = &H36 Public Const VK_7 = &H37 Public Const VK_8 = &H38 Public Const VK_9 = &H39 Public Const VK_A = &H41 Public Const VK_B = &H42 Public Const VK_C = &H43 Public Const VK_D = &H44

第5章-多线程-补充案例

第五章补充案例 案例5-1继承Thread类创建多线程 一、案例描述 1、考核知识点 编号:00105002 名称:继承Thread类创建多线程 2、练习目标 ?掌握如何通过继承Thread类实现多线程的创建。 ?掌握Thread类中run()方法和start()方法的使用。 3、需求分析 在程序开发中,会遇到一个功能需要多个线程同时执行才能完成的情况。这时,可以通过继承线程类Thread,并重写Thread类中的run()方法来实现。为了让初学者熟悉如何创建多线程,在案例中将通过继承Thread类方式创建线程,并实现多线程分别打印0~99的数字的功能。 4、设计思路(实现原理) 1)自定义一个类Demo,使其继承Thread类。 2)在Demo类中重写run()方法,在run()方法内编写一个for循环,循环体内打印:“Demo:” +当前循环次数。 3)编写测试类Example01,在Example01类的main()方法中,创建一个Demo对象,并执 行其start()方法,接着编写一个for循环,循环体内打印:“main:”+当前循环次数。

二、案例实现 class Demo extends Thread { public void run() { for (int x = 0; x < 100; x++) { System.out.println("Demo:"+x); } } } public class Example01{ public static void main(String[] args) { Demo d = new Demo(); d.start(); for(int x=0; x<100; x++){ System.out.println("main:"+x); } } } 运行结果如图5-1所示。 图5-1运行结果 三、案例总结 1、通过继承Thread类,并重写Thread类中的run()方法可以实现多线程。 2、Thread类中,提供的start()方法用于启动新线程,线程启动后,系统会自动调用run()方法。 3、main()方法中有一条主线程在运行。

VB代码大全

隐藏form1: form1.hide 显示form1: form1.show --------------------------------------------------------------------------------------------- 退出程序时,弹出窗口提示是否要退出: Private Sub Form_Unload(Cancel As Integer) Dim iAnswer As Integer iAnswer = MsgBox("真要退出吗?", vbYesNo) If iAnswer = vbNo Then Cancel = True Else End End If End Sub ---------------------------------------------------------------------------------------------- 只能用任务管理器关闭程序的代码: Private Sub From_Unload(Cancel As Integer) Cancel = true End Sub ------------------------------------------------------------------------------------------------ 点击command1打开33IQ网: Dim strURL Private Sub Command1_Click() strURL = "错误!超链接引用无效。 Shell "explorer.exe " & strURL, 1 End Sub ------------------------------------------------------------------------------------------------ 运行c:\1.exe shell "c:\1.exe" 执行c:\1.bat shell "c:\1.bat" 注:只适用于大部分exe和全部bat。

多线程练习题目

多线程练习题目

————————————————————————————————作者:————————————————————————————————日期:

多线程? 一、单项 1.下述哪个选项为真?() A.Error类是一个RoutimeException异常 B.任何抛出一个RoutimeException异常的语句必须包含在try块之内 C.任何抛出一个Error对象的语句必须包含在try块之内 D.任何抛出一个Exception异常的语句必须包含在try块之内 2.下列关于Java线程的说法哪些是正确的?( ) A.每一个Java线程可以看成由代码、一个真实的CPU以及数据3部分组成 B.创建线程的两种方法,从Thread类中继承的创建方式可以防止出现多父类问题 C.Thread类属于java.util程序包 D.以上说法无一正确 3.哪个关键字可以对对象加互斥锁?( ) A.transient B.synchronized C.serialize D.static 4.下列哪个方法可用于创建一个可运行的类?() A.public classXimplements Runable{ publicvoid run() {……}} B.public class XimplementsThread { public void run(){……} } C. public class X implements Thread { public int run() {……} } D.publicclass X implements Runable { protectedvoidrun(){……}} 5.下面哪个选项不会直接引起线程停止执行?( ) A.从一个同步语句块中退出来 B.调用一个对象的wait方法 C.调用一个输入流对象的read方法 D.调用一个线程对象的setPriority方法 6.使当前线程进入阻塞状态,直到被唤醒的方法是() A.resume()方法 B.wait()方法 C.suspend()方法D.notify()方法 7.运行下列程序,会产生的结果是( ) publicclassXextends Thread implements Runnable { public void run(){ System.out.println(“this is run()”); } publicstaticvoid main(String[] args) { Thread t=new Thread(newX()); t.start();

多线程练习题目

多线程 一、单项 1.下述哪个选项为真?( ) A.Error类是一个RoutimeException异常 B.任何抛出一个RoutimeException异常的语句必须包含在try块之内 C.任何抛出一个Error对象的语句必须包含在try块之内 D. 任何抛出一个Exception异常的语句必须包含在try块之内 2.下列关于Java线程的说法哪些是正确的?( ) A.每一个Java线程可以看成由代码、一个真实的CPU以及数据3部分组成 B.创建线程的两种方法,从Thread类中继承的创建方式可以防止出现多父类问题 C.Thread类属于java.util程序包 D.以上说法无一正确 3.哪个关键字可以对对象加互斥锁?( ) A.transient B.synchronized C.serialize D.static 4.下列哪个方法可用于创建一个可运行的类?() A.public class X implements Runable { public void run() {……} } B. public class X implements Thread { public void run() {……} } C. public class X implements Thread { public int run() {……} } D.public class X implements Runable { protected void run() {……} } 5.下面哪个选项不会直接引起线程停止执行?( ) A.从一个同步语句块中退出来 B.调用一个对象的wait方法 C.调用一个输入流对象的read方法 D.调用一个线程对象的setPriority方法 6.使当前线程进入阻塞状态,直到被唤醒的方法是( ) A.resume()方法 B.wait()方法 C.suspend()方法 D.notify()方法 7.运行下列程序,会产生的结果是( ) public class X extends Thread implements Runnable { public void run(){ System.out.println(“this is run()”); } public static void main(String[] args) { Thread t=new Thread(new X()); t.start(); } }

vba常用代码大全

前言 我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。 而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。 第1.1例 ASC函数 一、题目: 要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。 二、代码: Sub 示例_1_01() Dim myNum1%, myNum2% myNum1 = Asc("Excel") '返回69 myNum2 = Asc("e") '返回101 [a1] = "myNum1= ": [b1] = myNum1 [a2] = "myNum2= ": [b2] = myNum2 End Sub 三、代码详解 1、Sub 示例_1_01():宏程序的开始语句。 2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。 也可以写为 Dim myNum1 As Integer 。Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。Integer 的类型声明字符是百分比符 号 (%)。

3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。 Asc函数返回一个 Integer,代表字符串中首字母的字符的ASCII代码。 语法 Asc(string) 必要的 string(字符串)参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。 4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。这里返回小写字母e 的ASCII代码101。 5、[a1] = "myNum1= ": [b1] = myNum1:把字符串“myNum1= “赋给A1单元格,把变量myNum1的值赋给B1单元格。 6、[a2] = "myNum2= ": [b2] = myNum2:把字符串“myNum2= “赋给A2单元格,把变量myNum2的值赋给B2单元格。 7、End Sub:程序的结束语句,和“Sub示例_1_01()”相对应。 第1.2例 Chr函数 一、题目"": 要求编写一段代码,运用Chr函数将ASCII值转换为对应的字符。 二、代码: Sub 示例_1_02() Dim myChar1$, myChar2$ myChar1 = Chr(69) ' 返回 E。 myChar2 = Chr(101) ' 返回 e。 [a1] = "myChar1= ": [b1] = myChar1 [a2] = "myChar2= ": [b2] = myChar2

多线程练习题

0、Java中多线程同步是什么? 在多线程程序下,同步能控制对共享资源的访问。如果没有同步,当一个Java线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致程序出现错误的结果。 1、解释实现多线程的几种方法? Java线程可以实现Runnable接口或者继承Thread类来实现,当你打算多重继承时,优先选择实现Runnable。还可以使用线程池。 2、Thread.start()与Thread.run()有什么区别? Thread.start()方法(native)启动线程,使之进入就绪状态,当cpu分配时间该线程时,由JVM调度执行run()方法。 3、为什么需要run()和start()方法,我们可以只用run()方法来完成任务吗? 我们需要run()&start()这两个方法是因为JVM创建一个单独的线程不同于普通方法的调用,所以这项工作由线程的start方法来完成,start由本地方法实现,需要显示地被调用,使用这俩个方法的另外一个好处是任何一个对象都可以作为线程运行,只要实现了Runn able接口,这就避免因继承了Thread类而造成的Java的多继承问题。 4、什么是ThreadLocal类,怎么使用它? ThreadLocal是一个线程级别的局部变量,并非“本地线程”。ThreadLocal为每个使用该变量的线程提供了一个独立的变量副本,每个线程修改副本时不影响其它线程对象的副本(译者注)。 5、Sleep()、suspend()和wait()之间有什么区别? Thread.sleep()使当前线程在指定的时间处于“非运行”(Not Runnable)状态。线程一直持有对象的监视器。比如一个线程当前在一个同步块或同步方法中,其它线程不能进入该块或方法中。如果另一线程调用了interrupt()方法,它将唤醒那个“睡眠的”线程。 注意:sleep()是一个静态方法。这意味着只对当前线程有效,一个常见的错误是调用t.sl eep(),(这里的t是一个不同于当前线程的线程)。即便是执行t.sleep(),也是当前线程进入睡眠,而不是t线程。t.suspend()是过时的方法,使用suspend()导致线程进入停滞状态,该线程会一直持有对象的监视器,suspend()容易引起死锁问题。 object.wait()使当前线程出于“不可运行”状态,和sleep()不同的是wait是object的方法而不是thread。调用object.wait()时,线程先要获取这个对象的对象锁,当前线程必须在锁对象保持同步,把当前线程添加到等待队列中,随后另一线程可以同步同一个对象锁来调用object.notify(),这样将唤醒原来等待中的线程,然后释放该锁。基本上wait() /notify()与sleep() /interrupt()类似,只是前者需要获取对象锁。 6、在静态方法上使用同步时会发生什么事? 同步静态方法时会获取该类的“Class”对象,所以当一个线程进入同步的静态方法中时,线程监视器获取类本身的对象锁,其它线程不能进入这个类的任何静态同步方法。它不像实例方法,因为多个线程可以同时访问不同实例同步实例方法。 7、当一个同步方法已经执行,线程能够调用对象上的非同步实例方法吗?

VB编程常用代码大全

VB编程常用代码大全 1.数值型函数: abs(num): 返回绝对值 sgn(num): num>0 1; num=0 0; num<0 -1;判断数值正负 hex(num): 返回十六进制值直接表示:&Hxx 最大8位 oct(num): 返回八进制值直接表示:&Oxx 最大8位 sqr(num): 返回平方根 num>0 int(num): 取整 int(99.8)=99; int(-99.2)=100 fix(num): 取整 fix(99.8)=99; fix(-99.2)=99 round(num,n): 四舍五入取小数位 round(3.14159,3)=3.142 中点数值四舍五入为近偶取整 round(3.25,1)=3.2 log(num): 取以e为底的对数 num>0 exp(n): 取e的n次幂通常用 num^n sin(num): 三角函数,以弧度为值计算 (角度*Pai)/180=弧度 con(num); tan(num); atn(num) 2.字符串函数: len(str):计算字符串长度中文字符长度也计为一! mid(str,起始字符,[读取长度]):截取字符串中间子字符串 left(str,nlen):从左边起截取nlen长度子字符串 right(str,nlen):从右边起截取nlen长度子字符串 Lcase(str):字符串转成小写 Ucase(str):字符串转成大写 trim(str):去除字符串两端空格 Ltrim(str):去除字符串左侧空格 Rtrim(str):去除字符串右侧空格 replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):替换字符串 注:默认值:起始字符 1;替代次数不限;比较方法区分大小写(0) InStr([起始字符,]str,查找字符串[,比较方法]):检测是否包含子字符串可选参数需同时选返回起始位置 InStrRev(str,查找字符串[,起始字符][,比较方法]):反向检测是否包含子字符串返回起始位置 space(n):构造n个空格的字符串 string(n,str):构造由n个str第一个字符组成的字符串 StrReverse(str):反转字符串 split(str,分割字符串[,次数][,比较方法]):以分割字符串为分割标志将字符串转为字符数组可选参数需同时选

经典多线程的练习题

java中有几种方法可以实现一个线程(jdk5.0之前)?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runnable接口。 用synchronized关键字修饰同步方法,反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。 suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志, 指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。 sl eep() 和wait() 有什么区别? 答:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 同步和异步有何异同,在什么情况下分别使用他们?举例说明。 答:如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

vb编程代码大全

vb编程代码大全 1.数值型函数: abs(num): 返回绝对值 sgn(num): num>0 1; num=0 0; num<0 -1;判断数值正负 hex(num): 返回十六进制值直接表示:&Hxx 最大8位 oct(num): 返回八进制值直接表示:&Oxx 最大8位 sqr(num): 返回平方根num>0 int(num): 取整int(99.8)=99; int(-99.2)=100 fix(num): 取整fix(99.8)=99; fix(-99.2)=99 round(num,n): 四舍五入取小数位round(3.14159,3)=3.142 中点数值四舍五入为近偶取整round(3.25,1)=3.2 log(num): 取以e为底的对数num>0 exp(n): 取e的n次幂通常用num^n sin(num): 三角函数,以弧度为值计算(角度*Pai)/180=弧度con(num); tan(num); atn(num) 2.字符串函数: len(str):计算字符串长度中文字符长度也计为一! mid(str,起始字符,[读取长度]):截取字符串中间子字符串 left(str,nlen):从左边起截取nlen长度子字符串 right(str,nlen):从右边起截取nlen长度子字符串 Lcase(str):字符串转成小写 Ucase(str):字符串转成大写 trim(str):去除字符串两端空格 Ltrim(str):去除字符串左侧空格 Rtrim(str):去除字符串右侧空格 replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):替换字符串 注:默认值:起始字符1;替代次数不限;比较方法区分大小写(0) InStr([起始字符,]str,查找字符串[,比较方法]):检测是否包含子字符串可选参数需同时选返回起始位置 InStrRev(str,查找字符串[,起始字符][,比较方法]):反向检测是否包含子字符串返回起始位置space(n):构造n个空格的字符串 string(n,str):构造由n个str第一个字符组成的字符串 StrReverse(str):反转字符串 split(str,分割字符串[,次数][,比较方法]):以分割字符串为分割标志将字符串转为字符数组可选参数需同时选

线程编程方面笔试题

线程编程方面java笔试题 60、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runnable接口 用synchronized关键字修饰同步方法 反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。 61、sleep() 和 wait() 有什么区别? 答:sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。 62、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 答:如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。 当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 63、启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 64、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 答:不能,一个对象的一个synchronized方法只能由一个线程访问。 65、请说出你所知道的线程同步的方法。 答:wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉Interrupt edException异常。 notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。 66、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify

java创建多线程的两种方法(继承Thread类&实现Runnable接口)

java创建多线程的两种方法(继承Thread类/实现Runnable接 口) Thread 创建线程步骤: [java]view plaincopy 1.通常创建一个线程的步骤如下。 2.(1)创建一个新的线程类,继承 Thread 类并覆盖 Thread 类的 run()方法。 3.class ThreadType extends Thread{ 4.public void run(){ 5.…… 6. } 7. } 8.(2)创建一个线程类的对象,创建方法与一般对象的创建相同,使用关键字new完成。 9. ThreadType tt = new ThreadType(); 10.(3)启动新线程对象,调用 start()方法。 11. tt.start(); 12.(4)线程自己调用 run()方法。 13.void run(); 14.下面演示一个创建多个线程的例子。 15.class ThreadDemo2 extends Thread{ 16.//声明无参数,空构造方法 17. ThreadDemo2(){} 18.//声明带有字符串参数的构造方法 19. ThreadDemo2(String szName) 20. { 21.super(szName);//调用父类的构造方法 22. } 23.//重载 run 函数 24.public void run() 25. { 26.for (int count = 1,row = 1; row < 10; row++,count++) //循环计算输 出的*数目 27. { 28.for (int i = 0; i < count; i++)//循环输出指定的 count 数 目的* 29. { 30. System.out.print('*');//输出* 31. } 32. System.out.println();//输出* 33. }

最新VB知识点总结

VB知识点总结大全 第一章VB入门(*) 1.2.2 主窗口 1.标题栏 三种工作模式 (1)设计模式:可进行界面设计、代码编制 (2)运行模式:不可编辑界面、代码 (3)中断模式:不可编辑界面,可以编辑代码 2.菜单栏 3.工具栏 1.2.3 设计窗口 1.窗体设计窗口 2.代码设计窗口 (1)打开方式: 1.单击菜单栏的视图——选择代码窗口 2.双击窗体、控件 3.单击工程资源管理器窗口的“查看代码” (2)主要内容 1.对象列表框:显示所选对象的名称。列出窗体所有可用的对象名。 2.过程列表框:列出所有对象列表框中对象的事件过程或自定义过程的 名称。 1.2.4属性窗口 由四部分组成: 1.对象列表框 2.属性排列方式:按字母排列、按分类排列 3.属性列表框:左边为属性名,右边为相应的属性值 4.属性含义说明:显示所选属性的含义 1.2.5 工程资源管理器窗口 (1)3个按钮 1.“查看代码”:切换到代码窗口,显示和编辑代码 2.“查看对象”:切换到窗体窗口,显示和编辑对象 3.“切换文件夹”:切换到文件夹显示方式 (2)包含两种类型的文件 1.窗体文件(.frm文件):储存窗体上所有控件对象和有关的属性、对象 相应的事件过程、程序代码。 2.标准模块文件(.bas文件):储存所有模块级变量和用户定义的通用过 程,该类型可选。 1.2.6 工具箱窗口

一般由21个按钮形式的图标构成。除指针外的20个为标准控件(指针不是控件),每个也是一个类。如:文本类、图形类等。 1.3.1 建立一个应用程序的步骤 1.建立用户界面的对象 2.对象属性的设置 3.创建对象事件过程及编程 4.运行和调试程序 5.保存程序和生成可执行文件 1.3.2 VB程序结构和编码规则 1.程序结构 (1)最上面为通用声明段,主要编写模块级以上的变量声明、Option选项的设置等。 (2)以下为程序代码的块结构,也就是事件过程或自定义过程,这构成程序的主体。块的先后次序与程序执行次序无关。 2.编码规则 (1)代码不区分字母的大小写 (2)语句书写自由 1.同一行可书写多个语句,语句间用冒号分隔 2.一个语句可分多行写,要在本行末加续行符“-”(空格和下划线) (3)为了程序的阅读、维护和调试,可加注释 1.一般用’(撇号)注释内容 2.也可使用工具栏的文本编辑器中的注释 第二章可视化编程基础(***) 2.1.2 类和象 1.对象:具体的控件或窗体等都是对象。 2.类:工具箱上的可视图标是标准控件类,如:命令按钮类、文本框类等。 注:窗体是个特例,它既是类也是对象。 2.1.3 对象的属性、方法和事件 属性、方法和事件构成了对象的三要素。 1.属性(用来描述和反映对象特征的参数) 设置属性的两种方法: (1)在设计时,通过属性窗口直接设置 (2)在代码中设置,通过赋值实现 大多数属性都可用以上两种方法设置,这种属性称为“可读写属性”,有一些只能通过属性窗口设置,此种属性称为“只读属性” 2.方法(附属于对象的行为和动作,也就是指使对象动作的命令) 如:Text1.setFocus (其中setFocus就是方法) 3.事件(如单击、双击、装载等都是事件) 事件和方法的简单区别:

相关主题
文本预览
相关文档 最新文档