Java程序设计课件:多线程.pptxVIP

  • 0
  • 0
  • 约8.9千字
  • 约 41页
  • 2023-06-13 发布于山东
  • 举报
Java程序设计 多线程 9.1 进程与线程进程:进程是正在运行的程序实例,是系统调度和资源分配的独立单位系统进程、用户进程线程:线程是程序中的执行流,是程序执行的最小处理单位,每个线程有独立的运行栈和程序计数器在单个程序中同时运行多个线程完成不同的工作,称为多线程特点多个进程的内部数据和状态都是完全独立的,而多线程共享一块内存空间和一组系统资源,有可能互相影响线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程的切换负担要小 线程的运行环境 关于多线程的一些思考多线程可以帮助程序更充分地利用时间片,而多核CPU和多核系统的出现,更突显了这一优势但多线程程序也会导致CPU频繁的切换线程,同时也带来线程同步、线程安全等问题新的软硬件架构会在内部进行一些优化,提高软件硬件的工作效率 线程的状态与调度 线程的生命状态与周期 9.2 线程类与线程的创建public Thread( ThreadGroup group, Runnable target, String name );group指明线程所在的组,可以把很多线程加在一个组里面,进行集中控制。target是执行线程体的目标对象。任何实现接口Runnable的对象都可以作为一个线程的目标对象;name是线程的名称。Thread() Thread (Runnable?target) Thread (String?name) Thread类的主要方法多个构造方法;采用不同的方式在创建新线程对象的时候初始化数据。void run();线程所执行的代码。它必须在子类中进行重写,但不能直接调用。void start();start方法是线程执行的入口,启动线程对象,使之从新建状态转入就绪状态,多次调用会产生异常。 构造线程体的两种方法(1)定义一个线程类,它继承类Thread并重写其中的方法run( ); public class MyThread extends Thread { public void run( ) { // 覆写run()方法 …… } }产生线程的对象: MyThread newthread= new MyThread();启动线程: newthread.start(); 构造线程体的两种方法(2)提供一个实现接口Runnable的类作为线程的目标对象,在初始化一个Thread类的对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体run( )。public class Apple implements Runnable { public void run( ) { //实现run()方法 …… } }产生线程的对象:Apple newthread = new Apple ();Thread th = new Thread(newthread);启动线程: th.start(); 通过继承类Thread构造线程示例 class SimpleThread extends Thread { public SimpleThread(String str) { super(str); } public void run() { for (int i = 0; i 10; i++) { System.out.println(i + +getName()); try { sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} } System.out.println(DONE! + getName()); } } public class TwoThreadsTest { public static void main (String args[]) { new SimpleThread(First).start(); new SimpleThread(Second).start(); } } 可能的运行结果:0 First0 Second1 First1 Second2 First3 First4 First2 Second5 First3 Second6 First7 First4 Second8 First5 Second6 Second9 FirstDONE! First7 Second8 Se

文档评论(0)

1亿VIP精品文档

相关文档