java线程中的精灵线程是做什么用的

java线程中的精灵线程是做什么用的,第1张

精灵线程(有的也叫守护线程)

定义:本身无法使虚拟主机保持猜山活动的线程成为精灵线程.

方法:isDaemon

public final boolean isDaemon()

返回值:如果是精灵线程,则碧首返回True,否则为FalsesetDaemonpublic final void setDaemon(boolean daemon)

参数:daemon如果为True,表明将设置当前线程为精灵线程.否则设为用户线程.如果当前线程不能被修改则发出SecurityException异常.

在Thread对象中有一个属性可以设置,即Daemon属性.设置成true(缺省为false),可以将线程设为精灵线程.穗慧中

import java.io.*

import java.util.*

import java.awt.*

import java.awt.event.*

/**

* 支持脚本文件的按键控制程序

*/

public class KeySprite{

public static void main(String[] args){

String filename = "test.t"

try{

//读取配置文件

Vector v = readFile(filename)

//执行文件

parseVector(v)

}catch(IOException e){

System.out.println("配置文件错误")

}catch(Exception e){

System.out.println("其他错误")

}

}

/**

* 读取文件到Vector中

* @param filepath 文件路径

*/

public static Vector readFile(String filepath) throws IOException{

Vector v = new Vector()

//文件缓冲输入流

BufferedReader br = new BufferedReader(

new InputStreamReader(

new FileInputStream(filepath)))

//州简运读取数据

String s = br.readLine()

while(s != null){

//添加到v

v.add(s)

//读取下一行

s = br.readLine()

}

//关闭输入流

br.close()

//返回数据

return v

}

/**

* 解析读到的Vector,并执行对应的 *** 作

* @param v Vector对象

*/

public static void parseVector(Vector v){

int size = v.size()

try{

//创建Robot对象

Robot r = new Robot()

for(int i = 0i <sizei++){

String s = (String)v.get(i)

//分解

String[] data = s.split(" ")

//解析执行

if(data[0].equals("移动")){

//获得坐标

int x = Integer.parseInt(data[1])

int y = Integer.parseInt(data[2])

//移动

r.mouseMove(x,y)

}else if(data[0].equals("按键")){

//获得按键种类

char c = data[1].toLowerCase().charAt(0)

//按键

r.keyPress(c)

//册梁释放

r.keyRelease(c)

}else if(data[0].equals("暂停")){

//获得暂停时间

int time = Integer.parseInt(data[1])

//暂停咐段

Thread.sleep(time)

}

}

}catch(Exception e){

e.printStackTrace()

}

}

}

脚本文件test.t

暂停 1000

移动 200 300

暂停 1000

移动 210 300

暂停 1000

移动 220 300

暂停 1000

移动 230 300

暂停 1000

移动 240 300

暂停 1000

移动 250 300

暂停 1000

移动 260 300

暂停 1000

移动 270 300

暂停 1000

移动 280 300

暂停 1000

移动 290 300

暂停 1000

移动 300 300

暂停 1000

移动 310 300

这个需要你自己进行判断的。

因为在精灵移动时,他的位置x、迟游y在屏幕上码禅销的变化,总有个不停改变的值,比如向上移动就是y++,向左移动就是x--,向右下移动就是x++、y++等等,控制精灵的移动范围,就是认为设定一个值,比如300,然后在精灵移动之前或者之后(根据实际情况而定),把x或者y(根据情况,有可能是x和y一起判断,并且两个值的移动范围还不一样)和这个值进行比较。

比较的方法通常有以下几种:

1、判断大小。比如如果当前精灵的位置大于设定值,那么x和y的值就不能再增加,这样就实现了对精灵移动范围的限定。

2、判断精灵位置和设定值之间的差值是否可以让精灵移动一次。因为很多情况下,精灵每移动一次,并不是简单的x++和y++,而是x+=3、y+=3或者x+=2、y+=3等等类似的情况,这个2和3,就是精灵每移动一次的步长。这种情况下,就可以采取这种方法,如果当前精灵的x或者y的值和边界之间的差值大于等于步长,那么就继续让x和y增加,否则不增袭滚加,这样也能实现精灵移动范围的设置。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12269286.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存