方法一
停顿一秒。判断语句 整除三 分为三种情况
package com.myh.kb13.t804;
/**
* @Description:线程类
* @author:myh
* @date: 2021/8/4 10:05
*/
public class MyThread extends Thread {
static int flag=0;
public MyThread(int level, String name) {
this.setPriority(level);
this.setName(name);
}
@Override
public void run() {
while (true){
try {
if(this.getName().equals("red") && flag%3==0){
System.out.println("我是" + Thread.currentThread().getName()+ "灯");
flag++;
}else if(this.getName().equals("yellow") && flag%3==1){
System.out.println("我是" + Thread.currentThread().getName() + "灯");
flag++;
}else if(this.getName().equals("green") && flag%3==2){
System.out.println("我是" + Thread.currentThread().getName() + "灯");
flag++;
}
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.myh.kb13.t804;
/**
* @Description:
* @author:myh
* @date: 2021/8/4 10:10
*/
public class MyDemo {
public static void main(String[] args) throws InterruptedException {
//启动线程类
MyThread m1 = new MyThread(5, "red"); //一般工作中用这个多一些
MyThread m2 = new MyThread(5, "yellow");
MyThread m3 = new MyThread(5, "green");
//运行线程 方法
//并行运行 并行运行 多线程
//
m1.start();
m2.start();
m3.start();
//依次运行 单线程
// m1.run();
// m2.run();
//线程对象启动
// MyThreadObj mto = new MyThreadObj();
// //必须把线程对象存放到线程中
// Thread th = new Thread(mto); //这个会有点多此一举
// Thread th1 = new Thread(mto); //这个对象主要有共用的功能 各有各的利弊
// th.start();
// th1.start();
// new MyNewThread(true).start();
// for (int i = 0; i < 5; i++) {
// System.out.println("当前为" + i);
// Thread.sleep(500);
// }
// System.out.println("bye");
}
}
方法二
直接三秒三秒来 也不用判断相互之间的逻辑
package com.myh.kb13.t804.setest;
/**
* @Description:
* @author:myh
* @date: 2021/8/4 10:10
*/
public class MyDemo {
public static void main(String[] args) throws InterruptedException {
//启动线程类
MyThread m1 = new MyThread( "red"); //一般工作中用这个多一些
MyThread m2 = new MyThread("yellow");
MyThread m3 = new MyThread("green");
m1.start();
Thread.sleep(1000);
m2.start();
Thread.sleep(1000);
m3.start();
}
}
package com.myh.kb13.t804.setest;
/**
* @Description:线程类
* @author:myh
* @date: 2021/8/4 10:05
*/
public class MyThread extends Thread {
public MyThread( String name) {
this.setName(name);
}
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName() + "灯");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}