1,线程调度 lb.setPriority(Thread.MAX_PRIORITY); lb.getPriority();
设置线程优先级(属于线程控制的方法, 但是基本不会使用, 了解一下, 面试的时候有可能会问到)
注意1: 优先级别只能设置为1-10之间的值
注意2: 由于java线程是抢占式的, 永远也无法确定下一个线程谁执行,
设置优先级别会一定程度的影响个各个线程抢到的概率
注意3: 线程优先级别不设置, 默认是5
2,线程加入 public final void join(); 让分支线程走完然后轮到主线程走
long start = System.currentTimeMillis();
wu.start();
wu.join();
long end = System.currentTimeMillis();
System.out.println("杀敌所需毫秒数"+ (end - start));
3,线程礼让 public static final void yield(); 让CPU暂时滞空,重新抢夺时间片
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
System.out.println(getName() +i);
Thread.yield();
}
}
4,线程休眠 public static final void sleep(int millis);
5,后台线程 public final void setDaemon(boolean on);
当一个线程结束,其他线程也要结束的一个方法。 守护线程
WuJiangThread3 guanYu = new WuJiangThread3("关羽");
guanYu.setDaemon(true);
guanYu.start();
6,中断线程
public final void stop() 这个方法太暴力,杀掉线程导致的终止 已经弃用
public void interrupt() 调用这个方法, 会让本来正在执行Thread.sleep方法的线程,主动抛出一个异常(中断异常)
也不会推荐使用, 强制让对方抛出了一个异常, 异常使得那个线程方法执行结束
最正确的方式, 通过isInterrupted询问自己是否应该继续执行, 通过interrupt来传达不执行的命令
interrupt方法是用来改变isInterrupted方法的返回结果的
这种方式比守护线程的方式更加的通用
isInterrupted() 没有被其他人调用打断方法的时候的值是false, 当其他人调用了打断方法之后, 返回true
while (!isInterrupted()) {
System.out.println(getName() + "正在准备");
}