编写一个Java多线程程序 继承Thread类或者实现Runnable接口任选其一使用 请使

1个回答
展开全部
摘要 下面是一个使用 Java 多线程编写的例子,其中使用了继承 Thread 类的方式来创建多线程,目的是打印数字 1~100。```javaclass NumberPrinter extends Thread { private int startNum; private int endNum; public NumberPrinter(int startNum, int endNum) { this.startNum = startNum; this.endNum = endNum; } @Override
咨询记录 · 回答于2023-06-22
编写一个Java多线程程序 继承Thread类或者实现Runnable接口任选其一使用 请使
下面是一个使用 Java 多线程编写的例子,其中使用了继承 Thread 类的方式来创建多线程,目的是打印数字 1~100。```javaclass NumberPrinter extends Thread { private int startNum; private int endNum; public NumberPrinter(int startNum, int endNum) { this.startNum = startNum; this.endNum = endNum; } @Override
public void run() { for (int i = startNum; i <= endNum; i++) { System.out.println(i); } }}public class Main { public static void main(String[] args) { NumberPrinter thread1 = new NumberPrinter(1, 50); NumberPrinter thread2 = new NumberPrinter(51, 100); thread1.start(); thread2.start(); }}```
在上面的例子中,首先定义了一个 NumberPrinter 类,该类继承自 Thread 类,内部包含两个变量 startNum 和 endNum,分别代表要打印的数字区间。在 run 方法中,使用 for 循环来打印数字,循环结束后线程终止。在 main 方法中,创建了两个 NumberPrinter 类的实例,分别打印 1~50 和 51~100 两个区间的数字。调用实例的 start 方法来启动线程,该方法将自动调用 run 方法,使得打印任务在新的线程中并发执行。需要注意的是,创建线程有两种方式,分别是继承 Thread 类和实现 Runnable 接口,两种方式实现多线程的效果是相同的,不过使用实现 Runnable 接口的方式可以避免 Java 类只能单继承的限制,具有更强的扩展能力。
把题目发我
```javaclass OneThread implements Runnable { private int maxNum; public OneThread(int maxNum) { this.maxNum = maxNum; } @Override public void run() { for (int i = 1; i <= maxNum; i += 2) { System.out.println("OneThread: " + i); } }}class TwoThread implements Runnable { private int maxNum; public TwoThread(int maxNum) { this.maxNum = maxNum; } @Override
public void run() { for (int i = 2; i <= maxNum; i += 2) { System.out.println("TwoThread: " + i); } }}public class Main { public static void main(String[] args) { OneThread oneThread = new OneThread(100); TwoThread twoThread = new TwoThread(100); Thread thread1 = new Thread(oneThread); Thread thread2 = new Thread(twoThread); thread1.start(); thread2.start(); }}```
重来
```javaclass OneThread implements Runnable { private Object lock; private int maxNum; public OneThread(Object lock, int maxNum) { this.lock = lock; this.maxNum = maxNum; } @Override
public void run() { synchronized (lock) { for (int i = 1; i <= maxNum; i += 2) { System.out.println("OneThread: " + i); lock.notify(); try { if (i != maxNum) { lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } } }}
class TwoThread implements Runnable { private Object lock; private int maxNum; public TwoThread(Object lock, int maxNum) { this.lock = lock; this.maxNum = maxNum; } @Override
public void run() { synchronized (lock) { for (int i = 2; i <= maxNum; i += 2) { System.out.println("TwoThread: " + i); lock.notify(); try { if (i != maxNum) { lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } } }}
public class Main { public static void main(String[] args) { Object lock = new Object(); OneThread oneThread = new OneThread(lock, 100); TwoThread twoThread = new TwoThread(lock, 100); Thread thread1 = new Thread(oneThread); Thread thread2 = new Thread(twoThread); thread1.start(); thread2.start(); }}```
亲您自己连上就行了
利用对象流编写Java程序,检测本地"D:Ilmy Doc"路径下是否保存有考生对象,如果保存有,则输出考生信息(姓名、准考证号、身份证号);如果没有,则通过考生类创建一个考生对象,将考生基本信息输出并保存到上面的指定路径下的文件中。
 import java.io.*;import java.util.*;public class Exam { private static final String FILE_PATH = "D:\\Ilmy Doc\\exam.dat"; // 考生信息文件路径 public static void main(String[] args) { File file = new File(FILE_PATH); // 实例化文件对象 List stuList; // 定义存储考生信息的集合 if (file.exists()) { // 如果文件存在,则读取考生信息
try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(file))) { stuList = (List) in.readObject(); // 读取考生信息集合 System.out.println("考生信息如下:"); for (Student s : stuList) { System.out.println("姓名:" + s.getName() + ",准考证号:" + s.getExamNum() + ",身份证号:" + s.getIdNum()); } } catch (Exception e) { e.printStackTrace(); } } else { // 如果文件不存在,则创建考生信息并保存
到文件 try (Scanner input = new Scanner(System.in); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(file))) { stuList = new ArrayList>(); // 新建一个考生信息集合 System.out.print("请输入考生姓名:"); String name = input.nextLine(); System.out.print("请输入考生准考证号:");
String examNum = input.nextLine(); System.out.print("请输入考生身份证号:"); String idNum = input.nextLine(); Student newStu = new Student(name, examNum, idNum); // 新建考生对象 stuList.add(newStu); // 添加到考生信息集合中 out.writeObject(stuList); // 将考生信息集合保存到文件中 System.out.println("考生基本信息如下:");
System.out.println("姓名:" + name + ",准考证号:" + examNum + ",身份证号:" + idNum); System.out.println("考生信息已保存到文件 " + FILE_PATH); } catch (Exception e) { e.printStackTrace(); } } }}class Student implements Serializable { private String name; private String examNum; private String idNum;
public Student(String name, String examNum, String idNum) { this.name = name; this.examNum = examNum; this.idNum = idNum; } public String getName() { return name; } public String getExamNum() { return examNum; } public String getIdNum() { return idNum; }}
编写一个Java多线程程序(继承Thread类或者实现Runnable接口任选其一使用),请使用两个线程分别输出100以内的奇数和偶数,并按从小到大的顺序输出。
这个上面不是发过了?亲
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消