原来的程序:
package test1; public class ThreadTest2 { public static void main(String[] args) { try { for (int i = 0; i < 16; i++) { // 此行代码不能动 final String log = "" + (i + 1);// 此行代码不能动 parseLog(log); } } catch (InterruptedException e) { e.printStackTrace(); } } public static void parseLog(String log) throws InterruptedException { System.out.println(log + ":" + System.currentTimeMillis() / 1000); Thread.sleep(1000); } }
用4个线程和一个阻塞队列,修改此程序
package test1; import java.util.concurrent.ArrayBlockingQueue; public class ThreadTest1 { public static void main(String[] args) { final ArrayBlockingQueue<String> q = new ArrayBlockingQueue<String>(16); System.out.println("begin:" + System.currentTimeMillis() / 1000); for (int i = 0; i < 4; i++) { new Thread(new Runnable() { @Override public void run() { while (true) { try { String log = q.take(); parseLog(log); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } for (int i = 0; i < 16; i++) { // 此行代码不能动 final String log = "" + (i + 1);// 此行代码不能动 try { q.put(log); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void parseLog(String log) throws InterruptedException { System.out.println(log + ":" + System.currentTimeMillis() / 1000); Thread.sleep(1000); } }
相关推荐
VC++中可以使用`SetTimer`函数创建一个定时器,设定每隔一秒触发一次事件。在每次触发时,程序会减小计数值,并更新LED的状态以显示剩余时间。同时,为了实现“每一秒有声音提示”,我们需要在每次计时器事件触发时...
+ 2 每提交事务写一次日志,但每隔一秒刷新一次相应的磁盘文件 * innodb_force_recovery:在 Innodb 的自动恢复失败后,从崩溃中强制启动,有 1-6 个级别,数值越低恢复的方式也保守,默认为 4 Log 的参数: * ...
下面是一个简单的`libevent`使用示例,展示如何利用`libevent`实现一个每隔一秒打印“hello world”的程序: 1. **引入必要的头文件**: ```c #include #include ``` 2. **定义事件处理函数**: ```c void...
默认每隔一秒运行一次,5.6 版本里提供了一大堆的参数来控制 page cleaner 的 flush 行为,包括: * innodb_adaptive_flushing_lwm * innodb_max_dirty_pages_pct_lwmin * innodb_flushing_avg_loops * innodb_io_...
以下是一个简单的内核模块示例,它创建一个内核线程,每隔一秒钟在内核日志中打印字符。这个模块的`makefile`应该按照标准的模块构建规则编写,这里省略了具体实现。 ```c // 简化的示例代码,实际实现需要包含必要...
这个程序每隔一秒钟会输出一次内存和线程的统计信息,但请注意,由于CPU利用率的计算涉及到时间间隔,所以需要对获取CPU时间的部分做适当修改,以获取一段时间内的变化,从而计算出CPU利用率。 在项目中,我们可以...
例如,如果设置为10秒,共有10个线程,则每隔一秒启动一个线程。 - **循环次数**:每个线程执行请求的次数。若选择“永远”则表示线程将无限次地执行请求直到手动停止测试。 此外,还有其他高级配置项,如**启动...
在这个示例中,我们设置了一个定时器,每隔一秒向处理器发送一条消息,并简单地将消息打印出来。 在Java程序中,通常不直接写main方法,而是通过`org.apache.camel.main.Main`类启动Camel,传入路由构建器的类名,...
创建一个周期性任务,每隔一秒或指定间隔更新时钟的显示,确保时间的实时性。 6. **格式化和展示** `DateTimeFormatter`用于时间的格式化和解析。我们可以自定义格式,如`"HH:mm:ss"`,然后使用`format()`方法将`...