public class Work { private Logger logger=Logger.getLogger(this.getClass().getName()); public void doWork(String name){
try {
logger.log(Level.INFO,name+"开始工作..."); //日志
System.out.println(name+"努力工作...");//业务逻辑代码
logger.log(Level.INFO,name+"结束工作...");//日志
} catch (Exception e) {
logger.log(Level.SEVERE,name+"工作出现问题...");//日志
}
}
public static void main(String[] args) {
Work w=new Work();
w.doWork("小明");
}
}请问这段代码,为什么有时候输出的是:小明努力工作...
2013-10-10 20:34:10 com.wzh.test.Work doWork
信息: 小明开始工作...
2013-10-10 20:34:10 com.wzh.test.Work doWork
信息: 小明结束工作...
有时候输出的又是:2013-10-10 20:44:27 com.wzh.test.Work doWork
信息: 小明开始工作...
2013-10-10 20:44:27 com.wzh.test.Work doWork
信息: 小明结束工作...
小明努力工作...
应该要按顺序执行,始终输出下面这段才对2013-10-10 20:45:36 com.wzh.test.Work doWork
信息: 小明开始工作...
小明努力工作...
2013-10-10 20:45:36 com.wzh.test.Work doWork
信息: 小明结束工作...如果不按顺序执行,我又怎么能通过写日志来跟踪代码呢??
解决方案 »
- java 定时作业老是超过150S
- 如何在jsp页面解释html标签(这些标签是从数据库读取来的字符)
- Jtable动态改变单元格 谢谢,急用!
- 急!!! Struts2标签
- 给分:江湖告急。。求SQL Server 2000 Driver for JDBC Service Pack 4 驱动程序
- 急!数据库问题
- 【张孝祥】张孝祥老师的教学视频实况,要的请进来,强烈希望吧...
- 写一个java application,上传文件给Servelt,这段代码如何写?求最高效的代码
- ejb与ejb客户端运行在不同的java虚拟机??
- 100分请教这个Hibernate的hbm.xml怎么写?(急,在线等,答贴给分)
- 【提问】工作流有什么用?为什么需要工作流?!!
- 关于spring annotation的问题,总是说“NoSuchBeanDefinitionException” 希望得到你们的帮助!
public class Test {
public static void main(String[] args) throws UnsupportedEncodingException, InterruptedException {
new Thread(new MyThread()).start();
}
}class MyThread implements java.lang.Runnable
{
boolean isOut = true;
@Override
public synchronized void run()
{
for (int i = 0; i < 10; ++i)
{
if(isOut){
System.out.println("Thread: " + i);
isOut = false;
}else{
System.err.println("Thread : " + i);
isOut = true;
}
}
}
}输出结果:
貌似是没有涉及到多线程而且多次运行发现两次log执行的内容还是严格按照顺序的
这个可能就是涉及到System.out了
貌似与println也木关系(也不是多线程,即使是多线程也不可能跑到第一句log之前)
看来确实是一楼说的eclipse控制台输出实现的问题了,其特点还是同类型对象能保持顺序