在单线程中程序代码按调用顺序依次往下执行在这种情况下当主函数调用了子函数主函数必须等待子函数返回后才能继续往下执行不能实现两段程序代码同时交替运行的效果如果要一程序中实现多段代码同时交替运行就需产生多个线程并指定每个线程上所要运行的程序代码段这就是多线程 当程序启动运行是就自动产生了一个线程主函数main就是在这个线程上运行的当不再产生新的线程时程序就是单线程的 创建多线程有两种方法继承Thread类和实现Runnable接口 一个javalangThread类的对象代表一个线程 通过Thread类和它定义的对象就可以获得当前线程对象获取某一线程的名称 实现多线程可通过编写一个继承了Thread类的子类子类要覆盖Thread类中的run函数在子类run函数中调用想在新线程上运行的程序代码 启动一个新的线程不是直接调用Thread子类对象的run方法而是调用Thread子类对象的start方法 Thread类对象的start方法将产生一个新的线程并在该线程上运行该Thread类对象中的run方法根据面向对象的多态性在该线程上实际运行的是Thread子类对象的run方法 由于线程代码段在run方法中那么该方法执行完后线程也就相应的结束了因而可以通过控制run方法中的循环条件来控制线程的终止 public class ThreadDemo { public static void main(String args[]){ new TestThread()start() TestThread thread = new TestThread() TestThread thread = new TestThread() threadstart() threadstart() /*while(true){ Systemoutprintln(main thread is runing…) } */ } } class TestThread extends Thread { public void run(){ while(true){ Systemoutprintln(ThreadcurrentThread()getName() + is runing!!!) try { Threadsleep() } catch (InterruptedException e) { // TODO Autogenerated catch block eprintStackTrace() } } } } class TestThread extends Thread { public void run(){ while(true){ Systemoutprintln(ThreadcurrentThread()getName() + is runing***) try { Threadsleep() } catch (InterruptedException e) { // TODO Autogenerated catch block eprintStackTrace() } } } } copy from book |