好记性不如烂笔头72-多线程-虚假多线程
2015-03-30 17:09
323 查看
在编写多线程应用的时候,因为多线程的应用有一定的不可确定性,结果一些明显的山寨多线程也鱼目混珠,下面的应用虽然用到了thread,但是本质上,就是一个虚假的多线程
虚假多线程的java源代码
运行结果
i=1
i=2
i=3
i=4
i=5
i=6
分割点:j=1
分割点:j=2
分割点:j=3
分割点:j=4
分割点:j=5
分割点:j=6
从运行结果看很明显,这哪里是什么多线程呀,这个简直就是标准的串行运行呀。
原因
虽然我们用了thread的一些方法(sleep),但是没有继承Thread类,也没有实现Runnable接口,本质上来说,我们这个多线程,是假冒伪劣的虚假产品,因此,它不能并行运转,也是情理之中。
虚假多线程的java源代码
[code]package com.thread; /** * 假多线程,虽然有Thread关键词 * @author 范芳铭 */ public class EasyFalseThread { int i = 0, j = 0; public void start(int flag) { //让系统运行6次,为了能观察结果即可 for(int count = 0 ; count < 6 ; count ++){ try { Thread.sleep(100); } catch (Exception e) { e.printStackTrace(); } if (flag == 0) { i++; System.out.println("i=" + i); } else { j++; System.out.println("分割点:j=" + j); } } } public static void main(String[] args) { new EasyFalseThread().start(0); new EasyFalseThread().start(1); } }
运行结果
i=1
i=2
i=3
i=4
i=5
i=6
分割点:j=1
分割点:j=2
分割点:j=3
分割点:j=4
分割点:j=5
分割点:j=6
从运行结果看很明显,这哪里是什么多线程呀,这个简直就是标准的串行运行呀。
原因
虽然我们用了thread的一些方法(sleep),但是没有继承Thread类,也没有实现Runnable接口,本质上来说,我们这个多线程,是假冒伪劣的虚假产品,因此,它不能并行运转,也是情理之中。
相关文章推荐
- 好记性不如烂笔头73-多线程-继承thread实现简单多线程
- 好记性不如烂笔头74-多线程-实现Runnable接口的多线程
- 好记性不如烂笔头77-多线程-Thread子类的线程对象是不同的
- 好记性不如烂笔头75-多线程-并行访问下的资源竞争和样例
- 好记性不如烂笔头97-spring3学习(18)-多线程模式下的spring事务
- 好记性不如烂笔头77-多线程-Thread子类的线程对象是不同的
- 好记性不如烂笔头76-多线程-通过synchronized实现资源同步
- 好记性不如烂笔头78-多线程-非static的synchronized的影响范围
- 好记性不如烂笔头(char * p字符串定义)
- 好记性不如烂笔头2-JAVA日期类型和转换
- 好记性不如烂笔头5-JAVA快速文件拷贝
- 好记性不如烂笔头25-JAVA处理数据库事务(3) - 事务回滚点
- 好记性不如烂笔头31-java应用中的敏感词过滤实现(3)
- 好记性不如烂笔头35-利用java过滤器缓存WEB静态资源
- 好记性不如烂笔头48-java拦截器-JDK自带动态代理和CGLIB效率比较(3)
- Linux内核代码记录--“好记性不如烂笔头”
- 好记性不如烂笔头81-spring3.x学习(2)-java类加载器ClassLoader
- 好记性不如烂笔头87-spring3学习(8)-IoC的理解和比喻
- 好记性不如烂笔头89-spring3学习(10)-spring3常用schema(持续整理)
- 好记性不如烂笔头96-spring3学习(17)-利用debug观察事务传播