您的位置首页百科问答

jav料刚a 多线程

jav料刚a 多线程

的有关信息介绍如下:

问题补充说明:一开始启动线程,监视表montor 30秒定时扫描配置表config和routeDef的开关是否都开着。如果全都开着,执行动作,如果没有全开着。不执行任何动作。请高手帮忙写个例子

jav料刚a 多线程

所要执行的指令,也包括了执行指令所需的系统资源,不同进程所占用的系统资源相对独立。所以进程是重量级的任务,它们之间的通信和转换都需要操作系统付出较大的开销。

线程是进程中的一个实体,洲欢试是被系统独立调度和分派的基本单位。线程自己基本上不拥有系统资源,但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。所以线程是轻量级的任务,它们之间体令势才何光依械的通信和转换只需要较小的系统开销。

Java支持多线程编程,因此用Java编写的应用程序可以同时执行多个任务。Java的多线程机制使用起来非常方便,用户只需关注程序细节广委的实现,而不用担心后台的多任务系统。

Java语言里,线程表现为线程类。Thread线程类封装了所有需要的线程操作控制。在设计程序时,必须很清晰地区分开线程对象和运行线程,可以将线程对象看作是运行线程的控制面板。在线程对象里有很多方法来控制一个线程是否运行,睡高眠,挂起或停止。线程类是控制线班区弦给政她家留号程行为的唯一的手段。一旦一个Java程序启动后,就已经有一个线程在运行。可通过调用Thread.currentThread方法来查看地当前运行的是哪一个线程。

classThreadTest{

publicstat湖事省事组呀对等波icvoidmain(Stringa京月副服rgs[]){

Threadt=Thread.currentThread();

t.setName("单线程");//对线程取名龙赶威式歌边胡随磁女为"单线程"

t.setPriority(8);

//设置线程优先级为8,最高为10,最低为1,默认为5

System.out.println("Therunningthread:"+t);

//显示线程信息

try{

for(inti=0;i<3;i++){

System.out.println("Sleep之所异呼察走言赶陈内time"+i);

Thread.sleep(100);//睡眠100毫秒

}

}catch(InterruptedExceptione){//捕获异常

System.out.prin胜由范味局穿吃tln("threadhaswrong");

}

}

}

多线程的实现方法

继承Thread类

可通过继承Thread类并重写其中的run()方法来定义线程体以实现线程的具击体行为,然后创建该子类的对象以创建线程。

在继承Thread类的子类ThreadSubclassName中重写run()方法思李来定义线程体的一般别丝降深攻差格式为:

publicclassThreadSubclassNam印每事重士较仅曾黑太念eextends两区构成积酒Thread{

publicThreadSubclassName(){

.....//编写子类的构造方法,可缺省

}

publicvoidrun(){

.....//编写自己的线程代码

}

}

用定义的线程子类ThreadSubcl响翻叶宁表对assName创建线程对象的一般格式为:

ThreadSubclassNameThreadObject=

newThreadSubclassName();

然后,就可启动该线程对象表示的线程:

ThreadObject.start();//启动线程

应用继承类Thread的方法实现多线程的程序。本程序创建了三个单独的线程,它们分别打印自己的“HelloWorld!”。

classThreadDemoextendsThread{

privateStringwhoami;

privateintdelay;

publicThreadDemo(Strings,intd){

whoami=s;

delay=d;

}

publicvoidrun(){

try{

sleep(delay);

}catch(InterruptedExceptione)

System.out.println("HelloWorld!"+whoami

+""+delay);

}

}

publicclassMultiThread{

publicstaticvoidmain(Stringargs[]){

ThreadDemot1,t2,t3;

t1=newThreadDemo("Thread1",

(int)(Math.random()*2000));

t2=newThreadDemo("Thread2",

(int)(Math.random()*2000));

t3=newThreadDemo("Thread3",

(int)(Math.random()*2000));

t1.start();

t2.start();

t3.start();

}

}

实现Runnable接口

编写多线程程序的另一种的方法是实现Runnable接口。在一个类中实现Runnable接口(以后称实现Runnable接口的类为Runnable类),并在该类中定义run()方法,然后用带有Runnable参数的Thread类构造方法创建线程。

创建线程对象可用下面的两个步骤来完成:

(1)生成Runnable类ClassName的对象

ClassNameRunnableObject=newClassName();

(2)用带有Runnable参数的Thread类构造方法创建线程对象。新创建的线程的指针将指向Runnable类的实例。用该Runnable类的实例为线程提供run()方法---线程体。

ThreadThreadObject=newThread(RunnableObject);

然后,就可启动线程对象ThreadObject表示的线程:

ThreadObject.start();

在Thread类中带有Runnable接口的构造方法有:

publicThread(Runnabletarget);

publicThread(Runnabletarget,Stringname);

publicThread(Stringname);

publicThread(ThreadGroupgroup,Runnabletarget);

publicThread(ThreadGroupgroup,Runnabletarget,

Stringname);

其中,参数Runnabletarget表示该线程执行时运行target的run()方法,Stringname以指定名字构造线程,ThreadGroupgroup表示创建线程组。

用Runnable接口实现的多线程。

classTwoThreadimplementsRunnable{

TwoThread(){

Threadt1=Thread.currentThread();

t1.setName("第一主线程");

System.out.println("正在运行的线程:"+t1);

Threadt2=newThread(this,"第二线程");

System.out.println("创建第二线程");

t2.start();

try{

System.out.println("第一线程休眠");

Thread.sleep(3000);

}catch(InterruptedExceptione){

System.out.println("第一线程有错");

}

System.out.println("第一线程退出");

}

publicvoidrun(){

try{

for(inti=0;i<5;i++){

System.out.println(“第二线程的休眠时间:”

+i);

Thread.sleep(1000);

}

}catch(InterruptedExceptione){

System.out.println("线程有错");

}

System.out.println("第二线程退出");

}

publicstaticvoidmain(Stringargs[]){

newTwoThread();

}

}

程序运行结果如下:

正在运行的线程:Thread[第一主线程,5,main

创建第二线程

第一线程休眠

第二线程的休眠时间:0

第二线程的休眠时间:1

第二线程的休眠时间:2

第一线程退出

第二线程的休眠时间:3

第二线程的休眠时间:4

第二线程退出

另外,虚机团上产品团购,超级便宜