java线程试题_java线程练习题及答案

本文介绍了Java线程的基本概念,包括线程与进程的关系,以及如何在Java中创建和管理线程。通过Thread类和Runnable接口的使用,展示了多线程的实现方式,并提供了继承Thread类创建线程的示例代码。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gifjava线程练习题及答案

线程与线程类 1 线程的概念 线程的概念来源于计算机的操作系统的进程的概念。进程是一个程序关于某个数据集 的一次运行。也就是说,进程是运行中的程序,是程序的一次运行活动。 线程和进程的相似之处在于,线程和运行的程序都是单个顺序控制流。有些教材将线 程称为轻量级进程(light weight process)。线程被看作是轻量级进程是因为它运行在一个程 序的上下文内,并利用分配给程序的资源和环境。 作为单个顺序控制流,线程必须在运行的程序中得到自己运行的资源,如必须有自己 的执行栈和程序计数器。线程内运行的代码只能在该上下文内。因此还有些教程将执行上 下文(cution context)作为线程的同义词。 所有的程序员都熟悉顺序程序的编写,如我们编写的名称排序和求素数的程序就是顺 序程序。顺序程序都有开始、执行序列和结束,在程序执行的任何时刻,只有一个执行点。 线程(thread)则是进程中的一个单个的顺序控制流。单线程的概念很简单,如图 1所示。 多线程(multi-thread)是指在单个的程序内可以同时运行多个不同的线程完成不同的 任务,图 2说明了一个程序中同时有两个线程运行。 图 1 单线程程序示意图 图 2 多线程程序示意图 有些程序中需要多个控制流并行执行。例如, for(int i = 0; i < 100; i++)System.out.println(“Runner A = “ + i); for(int j = 0; j < 100; j++ )System.out.println(“Runner B = “+j); 上面的代码段中,在只支持单线程的语言中,前一个循环不执行完不可能执行第二个 循环。要使两个循环同时执行,需要编写多线程的程序。 很多应用程序是用多线程实现的,如 Hot Java Web 浏览器就是多线程应用的例子。在 Hot Java 浏览器中,你可以一边滚动屏幕,一边下载 Applet 或图像,可以同时播放动画和 声音等。 2 Thread 类和 Runnable 接口 多线程是一个程序中可以有多段代码同时运行,那么这些代码写在哪里,如何创建线 程对象呢? 首先,我们来看 Java 语言实现多线程编程的类和接口。在 java.lang 包中定义了 Runnable 接口和 Thread 类。 一个线程 两个线程Runnable 接口中只定义了一个方法,它的格式为:  public abstract void run() 这个方法要由实现了 Runnable 接口的类实现。Runnable 对象称为可运行对象,一个线 程的运行就是执行该对象的 run()方法。 Thread 类实现了 Runnable 接口,因此 Thread 对象也是可运行对象。同时 Thread 类也 是线程类,该类的构造方法如下:  public Thread()  public Thread(Runnable target)  public Thread(String name)  public Thread(Runnable target, String name)  public Thread(ThreadGroup group, Runnable target)  public Thread(ThreadGroup group, String name)  public Thread(ThreadGroup group, Runnable target, String name) target 为线程运行的目标对象,即线程调用 start()方法启动后运行那个对象的 run()方法, 该对象的类型为 Runnable,若没有指定目标对象,则以当前类对象为目标对象;name 为线 程名,group 指定线程属于哪个线程组(有关线程组的概念请参考 9.6节) 。 Thread 类的常用方法有:  public static Thread currentThread() 返回当前正在执行的线程对象的引用。  public void setName(String name) 设置线程名。  public String getName() 返回线程名。  public static void sleep(long millis) throws InterruptedException  public static void sleep(long millis, int nanos) throws InterruptedException 使当前正在执行的线程暂时停止执行指定的毫秒时间。指定时间过后,线程继续执 行。该方法抛出 InterruptedException 异常,必须捕获。  public void run() 线程的线程体。  public void start() 由 JVM 调用线程的 run()方法,启动线程开始执行。  public void setDaemon(boolean on) 设置线程为 Daemon 线程。  public boolean isDaemon() 返回线程是否为 Daemon 线程。  public static void yield() 使当前执行的线程暂停执行,允许其他线程执行。  public ThreadGroup getThreadGroup() 返回该线程所属的线程组对象。  public void interrupt() 中断当前线程。  public boolean isAlive() 返回指定线程是否处于活动状态。线程的创建 本节介绍如何创建和运行线程的两种方法。线程运行的代码就是实现了 Runnable 接口 的类的 run()方法或者是 Thread 类的子类的 run()方法,因此构造线程体就有两种方法:  继承 Thread 类并覆盖它的 run()方法;  实现 Runnable 接口并实现它的 run()方法。继承 Thread 类创建线程 通过继承 Thread 类,并覆盖 run()方法,这时就可以用该类的实例作为线程的目标对 象。下面的程序定义了 SimpleThread 类,它继承了 Thread 类并覆盖了 run()方法。 程序SimpleThread.javapublic class SimpleThread extends Thread{public SimpleThread(String str){super(str); } public void run(){for(int i=0; i<100; i++){System.out.println(getName()+“ = “+ i);try{sleep((int)(Math.random()*100));}catch(InterruptedException e){}} System.out.println(getName()+ “ DONE“); } } __________________________________________

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值