线程状态
线程停止
测试stop 1.建议线程正常停止----->利用次数,不建议死循环 2.建议使用标志位----->设置一个标志位 3.不要使用stop或者destroy等过时或者JDK不建议使用的方法
代码演示
public class TestStop implements Runnable {
private boolean flag = true ;
@Override
public void run ( ) {
int i = 0 ;
while ( flag) {
System. out. println ( "run ---------Thread" + i++ ) ;
}
}
public void stop ( ) {
this . flag = false ;
}
public static void main ( String[ ] args) {
TestStop t = new TestStop ( ) ;
new Thread ( t) . start ( ) ;
for ( int i = 0 ; i < 1000 ; i++ ) {
System. out. println ( "main-----" + i) ;
if ( i == 900 ) {
t. stop ( ) ;
System. out. println ( "线程停止了" ) ;
}
}
}
}
线程休眠
代码演示
import java. text. SimpleDateFormat;
import java. util. Date;
public class TestSleep2 {
public static void main ( String[ ] args) throws InterruptedException {
Date startTime = new Date ( System. currentTimeMillis ( ) ) ;
while ( true ) {
Thread. sleep ( 1000 ) ;
System. out. println ( new SimpleDateFormat ( "HH:mm:ss" ) . format ( startTime) ) ;
startTime = new Date ( System. currentTimeMillis ( ) ) ;
}
}
public static void tenDowm ( ) throws InterruptedException {
int num = 10 ;
while ( true ) {
Thread. sleep ( 1000 ) ;
System. out. println ( num-- ) ;
if ( num <= 0 ) {
break ;
}
}
}
}
线程礼让
代码演示
public class TestYield {
public static void main ( String[ ] args) {
MyYield m = new MyYield ( ) ;
new Thread ( m, "a" ) . start ( ) ;
new Thread ( m, "b" ) . start ( ) ;
}
}
class MyYield implements Runnable {
@Override
public void run ( ) {
System. out. println ( Thread. currentThread ( ) . getName ( ) + "线程开始执行" ) ;
Thread. yield ( ) ;
System. out. println ( Thread. currentThread ( ) . getName ( ) + "线程停止执行" ) ;
}
}
线程强制执行_join
代码演示
public class TestJoin implements Runnable {
@Override
public void run ( ) {
for ( int i= 0 ; i< 1000 ; i++ ) {
System. out. println ( "线程vip来了" + i) ;
}
}
public static void main ( String[ ] args) throws InterruptedException {
TestJoin t= new TestJoin ( ) ;
Thread thread= new Thread ( t) ;
thread. start ( ) ;
for ( int i= 0 ; i< 500 ; i++ ) {
if ( i== 200 ) {
thread. join ( ) ;
}
System. out. println ( "main" + i) ;
}
}
}