线程的第二种控制方法
定义一个类实现Runnable 接口,在接口中复写run()方法,生成一个Thread对象,将Runnable对象作为参数传入Thread对象。
class RunnableImp implements Runnable{
public void run(){
for(int i = 0;i < 100;i++){
System.out.println("Runnable" + "--" + i);
try{
if(i == 50){
Thread.sleep(50);
}
}
catch(Exception e){
System.out.println(e);
}
}
}
}
class Test{
public static void main(String[] args){
//生成一个Runnable类接口实现的对象
RunnableImp ri = new RunnableImp();
//生成一个Thread对象,并将Runnable接口实现类的对象作为参数。
//传递给Thread
Thread t = new Thread(ri);
t.setPriority(Thread.MAX_PRIORITY);
System.out.println(t.getPriority());
t.start();
}
}
线程的简单控制方法
Thread.sleep():括号内为休眠时间单位毫秒。休眠结束后进入预启动状态等待cpu。
Thread.yield():当前线程让出cpu,重新争夺cpu
设置线程的优先级
对象.setPriority()
线程的优先级最大是10最小是1。可以使用Thread的常量来设置。
getPriority:取得线程优先级。
线程实例
import java.util.*;
public class TestThread {
public static void main(String[] args) {
MyThread m = new MyThread();
Thread n = new Thread(m);
n.start();
try {
Thread.sleep(10000);
}
catch(InterruptedException e ) {
e.printStackTrace();
}
m.setFlag();
}
}
class MyThread implements Runnable {
private boolean flag = true;
public void run () {
try {
while(flag) {
//除非继承Thread不然不可以直接调用sleep方法,需要Thread.sleep()方法。
Thread.sleep(1000);
System.out.println("---" + new Date() + "---");
}
}
catch(InterruptedException e) {
e.printStackTrace();
}
}
//设置类中的私有变量必须要用setXXX方法。
void setFlag() {
this.flag = false;
}
}