// sleep()示例publicclassSleepDemo{publicstaticvoidmain(String[] args){Thread t1 =newThread(newMyRunnable(),"t1");Thread t2 =newThread(newMyRunnable(),"t2");
t1.start();
t2.start();}}classMyRunnableimplementsRunnable{@Overridepublicvoidrun(){synchronized(MyRunnable.class){System.out.println(Thread.currentThread().getName()+" is running");try{// 让当前线程睡眠3秒Thread.sleep(3000);}catch(InterruptedException e){
e.printStackTrace();}System.out.println(Thread.currentThread().getName()+" is finished");}}}// 输出结果:
t1 is running
t1 is finished
t2 is running
t2 is finished
// join()示例// 创建一个线程BThread threadB =newThread(newRunnable(){@Overridepublicvoidrun(){// 模拟耗时操作try{Thread.sleep(2000);}catch(InterruptedException e){
e.printStackTrace();}System.out.println("Thread B is finished.");}});// 创建一个线程AThread threadA =newThread(newRunnable(){@Overridepublicvoidrun(){System.out.println("Thread A is waiting for Thread B.");// 调用线程B的join()方法try{
threadB.join();}catch(InterruptedException e){
e.printStackTrace();}System.out.println("Thread A is resumed.");}});// 启动两个线程
threadB.start();
threadA.start();// 输出结果:ThreadA is waiting forThreadB.
ThreadB is finished.
ThreadA is resumed.
// yield()示例publicclassYieldDemo{publicstaticvoidmain(String[] args){Thread t1 =newThread(newYieldRunnable(),"t1");Thread t2 =newThread(newYieldRunnable(),"t2");
t1.start();
t2.start();}}classYieldRunnableimplementsRunnable{@Overridepublicvoidrun(){for(int i =0; i <10; i++){System.out.println(Thread.currentThread().getName()+" is running");// 让当前线程让出CPU资源,让其他同优先级的线程有机会执行Thread.yield();}}}// 输出结果(可能不同):
t1 is running
t2 is running
t1 is running
t2 is running
t1 is running
t2 is running
t1 is running
t2 is running
t1 is running
t2 is running
t1 is running
t2 is running
t1 is running
t2 is running
t1 is running
t2 is running
t1 is running
t2 is running