您的位置:首页 > 其它

好记性不如烂笔头72-多线程-虚假多线程

2015-03-30 17:09 323 查看
在编写多线程应用的时候,因为多线程的应用有一定的不可确定性,结果一些明显的山寨多线程也鱼目混珠,下面的应用虽然用到了thread,但是本质上,就是一个虚假的多线程

虚假多线程的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接口,本质上来说,我们这个多线程,是假冒伪劣的虚假产品,因此,它不能并行运转,也是情理之中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: