自定义一个类Demo,使其实现Runnable接口;在Demo类中覆写run()方法,在方法内编写synchronized同步代码块,在进入同步代码块时,打印线程名称,然后编写一个for循环,循环体内打印:运行线程名称+循环次数。当循环次数等于3时,跳出循环;编写测试类Example05,在Example05类的main()方法中,创建一个Demo对象,利用Thread的构造方法创建两个线程对象,分别命名“张三”和“李四”,执行两个线程的start()方法。
时间: 2023-12-11 08:02:32 浏览: 91
好的,我来帮您写一下这段代码:
```java
public class Demo implements Runnable {
@Override
public void run() {
synchronized (this) {
System.out.println(Thread.currentThread().getName() + "进入同步代码块");
for (int i = 1; i <= 5; i++) {
System.out.println(Thread.currentThread().getName() + "运行" + i + "次");
if (i == 3) {
break;
}
}
}
}
}
public class Example05 {
public static void main(String[] args) {
Demo demo = new Demo();
Thread thread1 = new Thread(demo, "张三");
Thread thread2 = new Thread(demo, "李四");
thread1.start();
thread2.start();
}
}
```
在上面的代码中,我们自定义了一个类`Demo`,并实现了`Runnable`接口。在`run()`方法中,我们使用了`synchronized`关键字来实现同步代码块,然后在进入同步代码块时,打印线程名称。接着,我们使用了一个`for`循环来循环打印运行线程名称和循环次数,并且在循环次数等于3时跳出循环。
在`Example05`测试类中,我们创建了一个`Demo`对象,并使用`Thread`的构造方法创建了两个线程对象,分别命名为“张三”和“李四”,然后执行了两个线程的`start()`方法。这样,两个线程就会同时执行`Demo`类中的`run()`方法,而在进入同步代码块时会依次打印线程名称。
阅读全文