原来的程序:
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); } }
相关推荐
java多线程每个线程挨着打印ABC的4种实现方式,有4个线程t1、t2、t3、t4,t1打印A后t2打印A再t3打印A再t4打印A,然后从新回到t1打印B再t2打印B...t4打印B... 4个线程轮流打印abc... 一个线程可以理解为一个人,打印...
启动两个线程,一个线程打印1~52,另一个线程打印A~Z
1.该工程为maven构建,要有maven环境 2.支持异步打印 3.支持多线程打印
一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用外部程序并获取打印结果 一个简单的例子,C#多线程实现调用...
将这个类添加到你的工程中,修改你要创建的日志名称,就OK,支持线程中打印。 不过最好自己修改一下,因为会一直打日志,直到文件最大。可以判断一下,如果日志文件过大,则重新创建一个文件.
1. 实现一个类ThreadMock(模拟线程),用来模仿Thread类,该类具有以下特征: a) Public class ThreadMock implents ...例如第一个线程打印1,接着第二个线程打印100,接着第一个线程打印2。。。。。。。。依此类推。
假设两个窗口同时出售一次列车的车票,车票就是共享资源,两个窗口就是两个线程。 3、编写程序,实现线程间的同步控制。假设有一个生产者(Producer),一个消费者(Consumer)。生产者产生0~9的整数,将它们存储在...
LogBox 类是集成多线程的日志打印类, 调用简单,具有debug 日志开关。 可以实现Error \ Debug\ Information \Warning 4种类型的日志输出。
我们使用的计算机系统就是一个多线程程序,我们在编辑文档时,可以同时...要求:每隔5秒求一次前n个数的最大者,然后再隔5秒求前n+1个数的最大者,依次类推,并以图形化形式实时显示运行结果。郑州轻工业大学实验作业。
3. 修改实验1第2题的程序,添加适当代码,以确保每个数字都恰好只被打印一次。 实验步骤: (1)、创建三个类Counter, Printer,Storage (2)、 创建TestCounter类,在该类中定义main函数,在main函数中定义Storage...
java10个线程按照顺序打印1-100
易语言多线程多次启动一个子程序源码,多线程多次启动一个子程序,循环
线程 编写 txt日志 临界代码区 数组模版 错误消息打印
java设计两个线程,一个线程充当电子表,每隔一秒在窗口上显示一下系统时间;另一个线程充当闹钟,每到整点就开始报时,即在窗口显示5次整点提示,同时将第一个线程挂起,报时完毕后再将第一个线程恢复。实验结果如...
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C。 如果要求打印 ABCBCACAC,线程对应打印信息到控制台。 弊端:耗费cpu
VC++做的一个多线程下载程序
本实验通过设计两个线程,一个是文章下载线程和一个文章打印线程,用来实现模拟线程同步打印机,文章下载线程实现把文章下载到缓冲区,文章打印线程实现把文章打印出来。
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C。 如果要求打印 ABCBCACAC,线程对应打印信息到控制台。 缺点:耗费cpu
1.使用三种VC的多线程同步方法编写一个多线程的程序(要求在屏幕上先显示Hello,再显示World)。 1)基于全局变量的多线程同步程序; 2)基于事件的多线程同步程序; 3)基于临界区的多线程同步程序。
C++线程安全日志库-Win32接口实现,博客讲解:https://www.cnblogs.com/swarmbees/ ->C++线程安全日志库-Win32接口实现