自定义一个类Demo,使其实现Runnable接口;在Demo类中覆写run()方法,在方法内编写synchronized同步代码块,在进入同步代码块时,打印线程名称,然后编写一个for循环,循环体内打印:运行线程名称+循环次数。当循环次数等于3时,跳出循环;编写测试类Example05,在Example05类的main()方法中,创建一个Demo对象,利用Thread的构造方法创建两个线程对象,分别命名“张三”和“李四”,执行两个线程的start()方法。
时间: 2023-10-09 11:07:34 浏览: 125
Java中继承thread类与实现Runnable接口的比较
5星 · 资源好评率100%
下面是代码实现:
```java
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()方法。这样,两个线程就会同时执行同步代码块中的代码,但是只有一个线程能够进入同步代码块。当其中一个线程进入同步代码块时,另一个线程就必须等待。
阅读全文