文档详情

Java多线程技术及案例.docx

发布:2017-01-31约1.64万字共30页下载文档
文本预览下载声明
Java多线程技术及案例进程和线程: 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。 线程和进程一样分为五个阶段:创建、就绪、运行、阻塞、终止。 多进程是指操作系统能同时运行多个任务(程序)。 多线程是指在同一程序中有多个顺序流在执行。Java中多线程的多种实现方式/base/javaeeJava中有多种多线程实现方法,主要是继承java.lang.Thread类的方法和java.lang.Runnable接口的方法。继承Thread类Thread是java.lang包中的一个类,从这个类中实例化的对象代表线程,启动一个新线程需要建立一个Thread实例。使用Thread类启动新的线程的步骤如下:实例化Thread对象调用start()方法启动线程构造方法:public Thread(String threadName);public Thread();例程:public class Thread1 extends Thread{//定义一个类继承Thread private int count=1000; public void run(){//重写run方法 while(true){ System.out.print(count+ ); if(--count==0){ return; } } } public static void main(String[] args){ Thread1 th1=new Thread1();//实例化继承了Thread的类 Thread1 th2=new Thread1(); th1.start();//调用start()方法, th2.start(); for(int i=0;i1000;i++){ System.out.print(A ); } }}以上例子中,Thread1继承了Thread并重写了run()方法,在主程序中,首先实例化Thread1对象,然后调用start()方法运行run()方法。另外主程序本身是一个线程,再调用两个新线程,根据打印数据,可以看到数字和字母交替输出,而且两组数字序列也穿插出现,说明三个线程都在同步运行。?Java中所有的线程都是同时启动的,至于什么时候,哪个先执行,完全看谁先得到CPU的资源。另外,在java中,每次程序运行至少启动2个线程。一个是main线程,一个是垃圾收集线程。因为每当使用java命令执行一个类的时候,实际上都会启动一个JVM,每一个JVM就是在操作系统中启动了一个进程。Runnable接口实现Runnable接口程序会创建一个Thread对象,并将Runnable对象与Thread对象相关联。使用Runable接口启动新的线程的步骤如下:建立实现Runnable接口的类使用参数为Runnable对象的构造方法创建Thread实例调用start()方法启动线程构造方法:public Thread(Runnable r);public Thread(Runnable r,String name);例程:class Thread2 implements Runnable{ private String name; public Thread2(String name) { =name; } @Override public void run() { for (int i = 0; i 5; i++) { System.out.println(name + 运行 : + i); } }}public class Main { public static void main(String[] args) { new Thread(new Thread2(C)).start(); //new Thread2(C)创建的是Runnable对象,new Thread(new Thread(C))是实例化与Runnable对象相关联的Thread对象 new Thread(new Thread2(D)).start(); }}上例主程序中,new Thread2(“C”)创建的是Runnable对象,new Thread(new Thread(“C”))是实例化与Runnable对象相关联的Thread对象。?Thread2类通过实现Runnable接口,使得该类有了多线程类的特征。run方法是多线程程序的一个约定。所有的多线程代码都在run方法里面。Thread和Runnable的区别与联系联系:?我们可以发现,无论是Thread还是Runnable方法,都有run方法和sta
显示全部
相似文档