实作 Runnable.界面 public class EraserimplementsRunnable //SE1FRunnable private boolean active private string maski //重新定义run()方法 public void run ()i while (isactiveo) System. out. print(mask) try //暂停目前的线程50毫秒 Thread currentThread().sleep(50)i catch(InterruptedException e)t e printstackTrace()i
实作Runnable界面 public class EraserimplementsRunnable { //实作Runnable private boolean active; private String mask; … //重新定义run()方法 public void run () { while(isActive()) { System.out.print(mask); try { //暂停目前的线程50毫秒 Thread.currentThread().sleep(50); } catch(InterruptedException e) { e.printStackTrace(); } } } }
实作 Runnable.界面 // Eraser实作 Runnable界面 Eraser eraser new eraser(#i)i //后动 Eraser线程 Thread eraser Thread new Thread (eraser)i eraserThread. start oi String password scanner next()i eraser. setActive(false)i
实作Runnable界面 //Eraser实作Runnable界面 Eraser eraser = new Eraser('#'); //启动Eraser线程 Thread eraserThread = new Thread(eraser); eraserThread.start(); String password = scanner.next(); eraser.setActive(false);
Daemon线程 个 Daemon线程是一个在背景执行服务的 线程 如果所有的 Daemon的线程都结束了,则 Daemon线程自动就会终止 从Main方法开始的是一个非 Daemon线程 如果希望某个线程在产生它的线程结束后 跟着终止’要捋它设为 Daemon线程
Daemon线程 • 一个Daemon线程是一个在背景执行服务的 线程 • 如果所有的非Daemon的线程都结束了,则 Daemon线程自动就会终止 • 从Main方法开始的是一个非Daemon线程 • 如果希望某个线程在产生它的线程结束后 跟着终止,要将它设为Daemon线程
Daemon线程 使用 setDaemono方法来设定一个线程是否 为 Daemon线程 预设所有从 Daemon线程产生的线程也是 Daemon线程 Thread thread new Thread //这是匿名类别的写法 new Runnable( public void run( while(true System. out. print("T) //设定为 Daemon线程 thread. setDaemon( true) thread. startoi
Daemon线程 Thread thread = new Thread( //这是匿名类别的写法 new Runnable() { public void run() { while(true) { System.out.print("T"); } } }); //设定为Daemon线程 thread.setDaemon(true); thread.start(); • 使用setDaemon()方法来设定一个线程是否 为Daemon线程 • 预设所有从Daemon线程产生的线程也是 Daemon线程
线程生命周期 执行 start0之后,线程进入 Runnable状态 此时线程尚未真正开始执行 ·必须等待排班器( Scheduler)的排班 Dead new Thread Unblocked Blocked Blocked事件 run()執行完畢 執行 start) Runnable Running 排班器
线程生命周期 • 执行start()之后,线程进入Runnable状态, 此时线程尚未真正开始执行 • 必须等待排班器(Scheduler)的排班