java 线程 每隔1小时执行一次_Java设计三个线程的睡眠,分别每隔1秒,5秒,10秒运行一次...

编写三个线程分别显示各自的运行时间,第一个线程每隔1秒钟运行一次,第二个线程每隔5秒钟运行一次,第三个线程每隔10秒钟运行一次。

源代码

线程类Sleep类

package experiment.exp8;

public class Sleep extends Thread{

public int SleepTime=0;

public long time=0;

public int i=0;

public int k=1;

public Sleep(String s) {

super(s);

}

public synchronized void run()

{

long start=System.currentTimeMillis();

while(i==0)

{

System.out.println(Thread.currentThread().getName()+"正在运行第"+k+++"次");

try

{

sleep(SleepTime);

}

catch(InterruptedException e)

{

e.getStackTrace();

}

long end=System.currentTimeMillis();

time=time+end-start;

}

}

}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个描述不完全准确。Java本身是支持多线程的,多个线程可以并发运行。但是,对于一些特定的任务,可能需要对线程进行限制,比如只允许同时运行一个线程,或者要求每隔一定时间才能运行一次线程。下面是两种实现方式: 1. 使用synchronized关键字控制线程并发: ```java public class Demo { public synchronized void run() throws InterruptedException { System.out.println(Thread.currentThread().getName() + " start running..."); Thread.sleep(5000); // 模拟任务运行5 System.out.println(Thread.currentThread().getName() + " end running..."); } public static void main(String[] args) { Demo demo = new Demo(); for (int i = 0; i < 10; i++) { new Thread(() -> { try { demo.run(); } catch (InterruptedException e) { e.printStackTrace(); } }).start(); } } } ``` 在这个例子中,使用了synchronized关键字对run方法进行同步控制,保证每次只有一个线程可以进入该方法运行。当一个线程进入该方法后,其他线程必须等待该线程运行完成后才能进入该方法。 2. 使用ScheduledExecutorService定时任务控制线程运行: ```java public class Demo { public void run() { System.out.println(Thread.currentThread().getName() + " start running..."); // do something System.out.println(Thread.currentThread().getName() + " end running..."); } public static void main(String[] args) { Demo demo = new Demo(); ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); executor.scheduleAtFixedRate(demo::run, 0, 5, TimeUnit.SECONDS); } } ``` 在这个例子中,使用ScheduledExecutorService创建一个定时任务,每隔5运行一次run方法。由于只创建了一个线程池,因此保证了每次只有一个线程运行

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值