使用runnable接口方式,创建一个线程,在main中打印学号一千次,在新线程中打印姓名一千次
时间: 2024-03-19 20:44:50 浏览: 110
好的,我来给您编写代码:
```java
public class TestThread {
public static void main(String[] args) {
// 创建一个Runnable对象,用于打印学号
Runnable printId = () -> {
for (int i = 1; i <= 1000; i++) {
System.out.println("学号:" + i);
}
};
// 创建一个线程并启动
new Thread(printId).start();
// 打印姓名
for (int i = 1; i <= 1000; i++) {
System.out.println("姓名:张三");
}
}
}
```
在这个例子中,我们使用了Lambda表达式来创建一个Runnable对象,然后将其传递给Thread构造函数。在main方法中,我们首先创建并启动一个新线程,该线程负责打印学号;然后在主线程中打印姓名。由于两个线程是并行执行的,因此输出顺序可能会有所不同。
相关问题
java通过实现Runnable接口的方式实现多线程,有三个工人搬砖,每个人各搬砖10次,谁抢到托运机谁去搬砖,三个工人的名字是学生的学号,学生的姓名,学生的专业。利用多线程模拟工人搬砖过程。
好的,我来为您解答。以下是实现多线程的示例代码:
```
public class BrickWorker implements Runnable {
private String name; // 工人姓名
private String id; // 工人学号
private String major; // 工人专业
public BrickWorker(String name, String id, String major) {
this.name = name;
this.id = id;
this.major = major;
}
@Override
public void run() {
for (int i = 1; i <= 10; i++) {
synchronized (this) {
System.out.println(name + "抢到了托运机,正在搬第" + i + "块砖。");
}
try {
Thread.sleep(1000); // 模拟搬砖的时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
BrickWorker worker1 = new BrickWorker("张三", "001", "计算机科学与技术");
BrickWorker worker2 = new BrickWorker("李四", "002", "软件工程");
BrickWorker worker3 = new BrickWorker("王五", "003", "信息安全");
Thread t1 = new Thread(worker1);
Thread t2 = new Thread(worker2);
Thread t3 = new Thread(worker3);
t1.start();
t2.start();
t3.start();
}
}
```
上面的代码中,我们定义了一个 `BrickWorker` 类,实现了 `Runnable` 接口,重写了 `run()` 方法,每个工人都会搬 10 次砖。在 `run()` 方法中,我们使用 `synchronized` 关键字,确保每个工人在搬砖的时候都是独占托运机的。然后我们创建了三个工人的实例对象,并创建了三个线程,分别启动这三个线程。
运行上面的代码,可以看到如下输出:
```
李四抢到了托运机,正在搬第1块砖。
王五抢到了托运机,正在搬第1块砖。
张三抢到了托运机,正在搬第1块砖。
李四抢到了托运机,正在搬第2块砖。
王五抢到了托运机,正在搬第2块砖。
张三抢到了托运机,正在搬第2块砖。
李四抢到了托运机,正在搬第3块砖。
王五抢到了托运机,正在搬第3块砖。
张三抢到了托运机,正在搬第3块砖。
李四抢到了托运机,正在搬第4块砖。
王五抢到了托运机,正在搬第4块砖。
张三抢到了托运机,正在搬第4块砖。
李四抢到了托运机,正在搬第5块砖。
王五抢到了托运机,正在搬第5块砖。
张三抢到了托运机,正在搬第5块砖。
李四抢到了托运机,正在搬第6块砖。
王五抢到了托运机,正在搬第6块砖。
张三抢到了托运机,正在搬第6块砖。
李四抢到了托运机,正在搬第7块砖。
王五抢到了托运机,正在搬第7块砖。
张三抢到了托运机,正在搬第7块砖。
李四抢到了托运机,正在搬第8块砖。
王五抢到了托运机,正在搬第8块砖。
张三抢到了托运机,正在搬第8块砖。
李四抢到了托运机,正在搬第9块砖。
王五抢到了托运机,正在搬第9块砖。
张三抢到了托运机,正在搬第9块砖。
李四抢到了托运机,正在搬第10块砖。
王五抢到了托运机,正在搬第10块砖。
张三抢到了托运机,正在搬第10块砖。
```
可以看到,三个工人都能够抢到托运机,按照顺序搬砖。这就是通过实现 `Runnable` 接口来实现多线程的示例。
1.通过实现Runnable接口的方式实现多线程,有三个工人搬砖,每个人各搬砖10次,谁抢到托运机谁去搬砖,三个工人的名字是学生的学号,学生的姓名,学生的专业。利用多线程模拟工人搬砖过程。
好的,我来为您解答。
首先,我们需要创建一个Worker类,包含工人的姓名、学号和专业信息,以及工人进行搬砖的方法。具体代码如下:
```java
public class Worker {
private String name;
private String id;
private String major;
public Worker(String name, String id, String major) {
this.name = name;
this.id = id;
this.major = major;
}
public void carryBrick(int count) {
for (int i = 0; i < count; i++) {
System.out.println(name + "正在搬砖,已搬砖次数:" + (i+1));
try {
Thread.sleep(1000); // 模拟搬砖的时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(name + "搬完了" + count + "块砖!");
}
}
```
接下来,我们创建一个主类WorkerTest,用于模拟三个工人进行搬砖的过程。具体代码如下:
```java
public class WorkerTest {
public static void main(String[] args) {
Worker w1 = new Worker("张三", "001", "土木工程");
Worker w2 = new Worker("李四", "002", "机械制造");
Worker w3 = new Worker("王五", "003", "电子信息");
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
w1.carryBrick(10);
}
}, w1.getName());
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
w2.carryBrick(10);
}
}, w2.getName());
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
w3.carryBrick(10);
}
}, w3.getName());
t1.start();
t2.start();
t3.start();
}
}
```
在主类中,我们创建了三个工人对象,然后通过创建线程的方式模拟每个工人进行搬砖的过程。最后启动三个线程,即可实现三个工人并发地搬砖。
注意,每个线程都需要传入一个Runnable对象,并重写其run方法。这里我们采用了匿名内部类的方式来实现。
另外,需要注意的是,每个线程需要传入一个名称,我们可以使用工人的姓名作为线程名称。
以上就是基于Runnable接口实现多线程的代码实现。希望能对您有所帮助。
阅读全文