package unit8; public class MyThreadTest { public static void main(String[] args) { MyThread t1 = new MyThread(); MyThread t2 = new MyThread(); t1.start(); t2.start(); try{ for(int k=0;k<=6;k++){ System.out.println("在主线程k中,k="+k); Thread.sleep(4000); } }catch (InterruptedException e) { // TODO: handle exception } } }
主线程休息的时候,执行MyThread类的两个实例线程。
package unit8; public class MyThread extends Thread{ public void run(){ for(int i=0;i<=5;i++){ try{ System.out.println("exp("+i+")="+Math.exp(i)); Thread.sleep(1000); }catch (InterruptedException e) { // TODO: handle exception } } } }
通过继承Thread类,并且能够且只能够实现run方法来自定义线程。
上面的程序中,如果将主线程sleep的时间设置为4000,则t1,t2这两个线程可以执行4次(因为sleep时间为1000,计算过程很快,被忽略)
程序执行结果如下:
在主线程k中,k=0 exp(0)=1.0 exp(0)=1.0 exp(1)=2.7182818284590455 exp(1)=2.7182818284590455 exp(2)=7.38905609893065 exp(2)=7.38905609893065 exp(3)=20.085536923187668 exp(3)=20.085536923187668 在主线程k中,k=1 exp(4)=54.598150033144236 exp(4)=54.598150033144236 exp(5)=148.4131591025766 exp(5)=148.4131591025766 在主线程k中,k=2 在主线程k中,k=3 在主线程k中,k=4 在主线程k中,k=5 在主线程k中,k=6
如果将主线程sleep的时间修改,将会得到不同执行结果。