package com.zzk.test; //同样一个线程类可以起两个线程 public class Test { public static void main(String[] args) { Runner r=new Runner(); Thread t1=new Thread(r); Thread t2=new Thread(r); t1.start(); t2.start(); } } class Runner implements Runnable { public void run() { for(int i=0;i<30;i++) { System.out.println("No. "+i); } } }
package com.zzk.test; //sleep方法 public class Test { public static void main(String[] args) { Runner r=new Runner(); Thread t=new Thread(r); t.start(); } } class Runner implements Runnable { public void run() { for(int i=0;i<30;i++) { if(i%10==0 && i!=0) { try { Thread.sleep(2000); }catch(InterruptedException e) {} } System.out.println("No. "+i); } } }
package com.zzk.test; //正确停止一个线程 public class Test { public static void main(String[] args) { Runner r=new Runner(); Thread t=new Thread(r); t.start(); for(int i=0;i<100000;i++) { if(i%10000==0&i>0) System.out.println("in thread main i="+i); } System.out.println("Thread main is over"); r.shutDown(); } } class Runner implements Runnable { private boolean flag=true; public void run() { int i=0; while (flag==true) { System.out.print(" "+i++); } } public void shutDown() { flag=false; } }
package com.zzk.test; public class Test { public static void main(String[] args) { Runner r=new Runner(); Thread t=new Thread(r); t.start(); try { t.join(); }catch(InterruptedException e) { } for(int i=0;i<50;i++) { System.out.println("主线程:"+i); } } } class Runner implements Runnable { public void run() { for(int i=0;i<50;i++) { System.out.println("SubThread: "+i); } } }
package com.zzk.test; public class Test { public static void main(String[] args) { Thread t=new Runner(); t.start(); for(int i=0;i<50;i++) { System.out.println("MainThread: "+i); } } } class Runner extends Thread { public void run() { System.out.println(Thread.currentThread().isAlive()); for(int i=0;i<50;i++) { System.out.println("SubThread: "+i); } } }
package com.zzk.test; public class Test implements Runnable { Timer timer=new Timer(); public static void main(String[] args) { Test test=new Test(); Thread t1=new Thread(test); Thread t2=new Thread(test); t1.setName("t1"); t2.setName("t2"); t1.start(); t2.start(); } public void run() { timer.add(Thread.currentThread().getName()); } } //class Timer { // private static int num=0; // // public void add(String name) { // synchronized(this) {//锁定某一个东西 // num++; // try {Thread.sleep(1);} // catch(InterruptedException e) {} // System.out.println(name+",你是第"+num+"个使用timer的线程"); // } // } //} class Timer { private static int num=0; public synchronized void add(String name) {//锁定当前对象 num++; try {Thread.sleep(1);} catch(InterruptedException e) {} System.out.println(name+",你是第"+num+"个使用timer的线程"); } }
输出:
t1,你是第1个使用timer的线程
t2,你是第2个使用timer的线程