java中的线程Thread
java.lang
Class Thread
线程的概念:
线程是一个程序内部的程序控制流。
主线程方法测试,main()
T.java
public class T{ public static void main(String[] args) { m1(); } public static void m1() { m2(); m3(); } public static void m2() {} public static void m3() {} }
线程图,只有一个线程
测试线程和方法
通过实现Runnable接口实现一个线程,启动线程时需要new一个Thread,调用thread的start方法
TestThread1.java
/* 测试线程1 */ public class TestThread1 { public static void main(String args[]) { Runner1 r = new Runner1(); //调用run()方法 r.run(); //Thread t = new Thread(r); //t.start(); for(int i=0; i<100; i++) { System.out.println("Main Thread:------" + i); } } } //实现Runnable接口实现一个线程 class Runner1 implements Runnable { public void run() { for(int i=0; i<100; i++) { System.out.println("Runner1 :" + i); } } }
F:\java\Thread>javac TestThread1.java F:\java\Thread>java TestThread1 Runner1 :0 Runner1 :1 Runner1 :2 Runner1 :3 Runner1 :4 Runner1 :5 Runner1 :6 Runner1 :7 Runner1 :8 Runner1 :9 Runner1 :10 Runner1 :11 Runner1 :12 Runner1 :13 Runner1 :14 Runner1 :15 Runner1 :16 Runner1 :17 Runner1 :18 Runner1 :19 Runner1 :20 Runner1 :21 Runner1 :22 Runner1 :23 Runner1 :24 Runner1 :25 Runner1 :26 Runner1 :27 Runner1 :28 Runner1 :29 Runner1 :30 Runner1 :31 Runner1 :32 Runner1 :33 Runner1 :34 Runner1 :35 Runner1 :36 Runner1 :37 Runner1 :38 Runner1 :39 Runner1 :40 Runner1 :41 Runner1 :42 Runner1 :43 Runner1 :44 Runner1 :45 Runner1 :46 Runner1 :47 Runner1 :48 Runner1 :49 Runner1 :50 Runner1 :51 Runner1 :52 Runner1 :53 Runner1 :54 Runner1 :55 Runner1 :56 Runner1 :57 Runner1 :58 Runner1 :59 Runner1 :60 Runner1 :61 Runner1 :62 Runner1 :63 Runner1 :64 Runner1 :65 Runner1 :66 Runner1 :67 Runner1 :68 Runner1 :69 Runner1 :70 Runner1 :71 Runner1 :72 Runner1 :73 Runner1 :74 Runner1 :75 Runner1 :76 Runner1 :77 Runner1 :78 Runner1 :79 Runner1 :80 Runner1 :81 Runner1 :82 Runner1 :83 Runner1 :84 Runner1 :85 Runner1 :86 Runner1 :87 Runner1 :88 Runner1 :89 Runner1 :90 Runner1 :91 Runner1 :92 Runner1 :93 Runner1 :94 Runner1 :95 Runner1 :96 Runner1 :97 Runner1 :98 Runner1 :99 Main Thread:------0 Main Thread:------1 Main Thread:------2 Main Thread:------3 Main Thread:------4 Main Thread:------5 Main Thread:------6 Main Thread:------7 Main Thread:------8 Main Thread:------9 Main Thread:------10 Main Thread:------11 Main Thread:------12 Main Thread:------13 Main Thread:------14 Main Thread:------15 Main Thread:------16 Main Thread:------17 Main Thread:------18 Main Thread:------19 Main Thread:------20 Main Thread:------21 Main Thread:------22 Main Thread:------23 Main Thread:------24 Main Thread:------25 Main Thread:------26 Main Thread:------27 Main Thread:------28 Main Thread:------29 Main Thread:------30 Main Thread:------31 Main Thread:------32 Main Thread:------33 Main Thread:------34 Main Thread:------35 Main Thread:------36 Main Thread:------37 Main Thread:------38 Main Thread:------39 Main Thread:------40 Main Thread:------41 Main Thread:------42 Main Thread:------43 Main Thread:------44 Main Thread:------45 Main Thread:------46 Main Thread:------47 Main Thread:------48 Main Thread:------49 Main Thread:------50 Main Thread:------51 Main Thread:------52 Main Thread:------53 Main Thread:------54 Main Thread:------55 Main Thread:------56 Main Thread:------57 Main Thread:------58 Main Thread:------59 Main Thread:------60 Main Thread:------61 Main Thread:------62 Main Thread:------63 Main Thread:------64 Main Thread:------65 Main Thread:------66 Main Thread:------67 Main Thread:------68 Main Thread:------69 Main Thread:------70 Main Thread:------71 Main Thread:------72 Main Thread:------73 Main Thread:------74 Main Thread:------75 Main Thread:------76 Main Thread:------77 Main Thread:------78 Main Thread:------79 Main Thread:------80 Main Thread:------81 Main Thread:------82 Main Thread:------83 Main Thread:------84 Main Thread:------85 Main Thread:------86 Main Thread:------87 Main Thread:------88 Main Thread:------89 Main Thread:------90 Main Thread:------91 Main Thread:------92 Main Thread:------93 Main Thread:------94 Main Thread:------95 Main Thread:------96 Main Thread:------97 Main Thread:------98 Main Thread:------99 F:\java\Thread>
按主线程main()顺序,线执行run()方法,在执行main方法后面的内容。
使用Thread,测试
TestThread1.java
/* 测试线程1 */ public class TestThread1 { public static void main(String args[]) { Runner1 r = new Runner1(); //调用run()方法 //r.run(); Thread t = new Thread(r); //开始一个新的分支,与main方法并行执行 t.start(); for(int i=0; i<100; i++) { System.out.println("Main Thread:------" + i); } } } //实现Runnable接口实现一个线程 class Runner1 implements Runnable { public void run() { for(int i=0; i<100; i++) { System.out.println("Runner1 :" + i); } } }
F:\java\Thread>javac TestThread1.java F:\java\Thread>java TestThread1 Main Thread:------0 Runner1 :0 Runner1 :1 Runner1 :2 Runner1 :3 Runner1 :4 Main Thread:------1 Runner1 :5 Main Thread:------2 Runner1 :6 Main Thread:------3 Runner1 :7 Main Thread:------4 Runner1 :8 Main Thread:------5 Runner1 :9 Main Thread:------6 Runner1 :10 Main Thread:------7 Runner1 :11 Main Thread:------8 Runner1 :12 Main Thread:------9 Runner1 :13 Main Thread:------10 Runner1 :14 Main Thread:------11 Runner1 :15 Main Thread:------12 Runner1 :16 Main Thread:------13 Runner1 :17 Main Thread:------14 Runner1 :18 Main Thread:------15 Runner1 :19 Main Thread:------16 Runner1 :20 Main Thread:------17 Runner1 :21 Main Thread:------18 Runner1 :22 Main Thread:------19 Runner1 :23 Main Thread:------20 Runner1 :24 Main Thread:------21 Runner1 :25 Main Thread:------22 Runner1 :26 Main Thread:------23 Runner1 :27 Main Thread:------24 Runner1 :28 Main Thread:------25 Runner1 :29 Main Thread:------26 Runner1 :30 Main Thread:------27 Runner1 :31 Main Thread:------28 Main Thread:------29 Main Thread:------30 Runner1 :32 Main Thread:------31 Runner1 :33 Main Thread:------32 Runner1 :34 Main Thread:------33 Runner1 :35 Main Thread:------34 Runner1 :36 Main Thread:------35 Runner1 :37 Main Thread:------36 Runner1 :38 Main Thread:------37 Runner1 :39 Main Thread:------38 Runner1 :40 Main Thread:------39 Runner1 :41 Main Thread:------40 Runner1 :42 Main Thread:------41 Runner1 :43 Runner1 :44 Runner1 :45 Main Thread:------42 Runner1 :46 Main Thread:------43 Runner1 :47 Main Thread:------44 Runner1 :48 Main Thread:------45 Runner1 :49 Main Thread:------46 Runner1 :50 Main Thread:------47 Runner1 :51 Main Thread:------48 Runner1 :52 Main Thread:------49 Runner1 :53 Main Thread:------50 Runner1 :54 Main Thread:------51 Runner1 :55 Main Thread:------52 Runner1 :56 Main Thread:------53 Runner1 :57 Main Thread:------54 Runner1 :58 Main Thread:------55 Runner1 :59 Main Thread:------56 Runner1 :60 Main Thread:------57 Runner1 :61 Main Thread:------58 Runner1 :62 Main Thread:------59 Runner1 :63 Main Thread:------60 Runner1 :64 Main Thread:------61 Runner1 :65 Main Thread:------62 Runner1 :66 Main Thread:------63 Runner1 :67 Main Thread:------64 Runner1 :68 Main Thread:------65 Runner1 :69 Main Thread:------66 Runner1 :70 Main Thread:------67 Runner1 :71 Main Thread:------68 Runner1 :72 Main Thread:------69 Runner1 :73 Main Thread:------70 Runner1 :74 Main Thread:------71 Runner1 :75 Main Thread:------72 Runner1 :76 Main Thread:------73 Runner1 :77 Main Thread:------74 Runner1 :78 Main Thread:------75 Runner1 :79 Main Thread:------76 Runner1 :80 Main Thread:------77 Runner1 :81 Main Thread:------78 Runner1 :82 Main Thread:------79 Runner1 :83 Main Thread:------80 Runner1 :84 Main Thread:------81 Runner1 :85 Main Thread:------82 Runner1 :86 Main Thread:------83 Runner1 :87 Main Thread:------84 Runner1 :88 Main Thread:------85 Runner1 :89 Main Thread:------86 Runner1 :90 Main Thread:------87 Runner1 :91 Main Thread:------88 Runner1 :92 Main Thread:------89 Runner1 :93 Main Thread:------90 Runner1 :94 Main Thread:------91 Runner1 :95 Runner1 :96 Runner1 :97 Main Thread:------92 Runner1 :98 Main Thread:------93 Runner1 :99 Main Thread:------94 Main Thread:------95 Main Thread:------96 Main Thread:------97 Main Thread:------98 Main Thread:------99 F:\java\Thread>
并行执行。