Java多线程题目及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

任务8 多线程编程

一、实验目的

1. 掌握线程的概念、线程的生命周期。

2. 掌握采用继承Thread 类创建子线程。

3. 掌握使用Runnable 接口使类线程化。

二、实验要求

1.掌握线程的概念、线程的生命周期。

2.掌握使用Runnable 接口使类线程化。

三、实验内容

一、输入以下源代码,多次运行程序,分析输出结果

1. 继承Thread 类创建子线程

public class MultiThreadExample{

public static void main(String []args){

new ThreadDemo("A").start();//启动线程A

new ThreadDemo("B").start();//启动线程B

}

}

class ThreadDemo extends Thread{

public ThreadDemo(String n){

super(n); //线程名称

}

public void run(){

for(int i=0;i<5;i++){

try{

// 睡眠一段随机时间

Thread.sleep((long)(Math.random() * 1000));

}catch(InterruptedException e){

e.printStackTrace();

}

System.out.print(getName()); //打印线程名称

}

}

}

2. 使用Runnable 接口使类线程化

class MyThread1 implements Runnable { // 实现Runnable接口创建线程类MyThread public void run() { // 实现Runnable接口的run()方法

for (int i = 0; i < 9; i++) {

System.out.println(Thread.currentThread().getName()+i + " ");

}

}

}

public class ThreadExample2 {

public static void main(String args[]) {

MyThread1 mt = new MyThread1(); // 创建线程类MyThread的实例t

Thread t = new Thread(mt); // 创建Thread类的实例t

t.start(); // 启动线程

for (int i = 0; i < 9; i++) {

System.out.println(Thread.currentThread().getName()+i + " ");

}

}

}

3 多次运行以下程序

public class Tst11 implements Runnable {

private int x;

private int y;

public static void main(String[] args) {

Tst11 t = new Tst11();

new Thread(t).start();

new Thread(t).start();

}

public void run() {

for (int i=1;i<20;i++) {

try {

Thread.sleep(200);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

x++;

y++;

System.out.println("x=" + x + ",y=" + y);

}

}

}

判断以上代码的运行结果是?

A 编译不通过

B 输出行类似x=1,y=1 ,总是重复一次。

C 输出行类似x=1,y=1 ,递增,每行不重复。

D 输出行类似x=2,y=3 ,x和y的值不一定相等

分析结果并给出原因

二、编写线程程序

1 要求:设计一个线程操作类,要求产生3个线程对象,并可以分别设置三个线程的休眠时间,如下所示:

1)线程A,休眠10秒

2)线程B,休眠20秒

3)线程C,休眠30秒

package 线程;

class MyThread extends Thread{

private int sleeptime;

public MyThread(String s) {

super(s);

}

public void setSleepTime(int sleeptime) {

this.sleeptime= sleeptime;

}

public void run() {

try {

System.out.println(Thread.currentThread().getName()+"进入休眠,休眠时间为:"+sleeptime/1000+"秒");

Thread.sleep(sleeptimess);

System.out.println(Thread.currentThread().getName()+"休眠结束。");

} catch (InterruptedException e) {

// TODO自动生成的 catch 块

e.printStackTrace();

}

}

}

public class Test1 {

public static void main(String[] args) {

MyThread A = new MyThread("线程A");

A.setSleepTime(10000);

MyThread B = new MyThread("线程B");

B.setSleepTime(20000);

MyThread C = new MyThread("线程C");

C.setSleepTime(30000);

A.start();

B.start();

C.start();

}

}

相关文档
最新文档