在编写多线程应用的时候,因为多线程的应用有一定的不可确定性,结果一些明显的山寨多线程也鱼目混珠,下面的应用虽然用到了thread,但是本质上,就是一个虚假的多线程
虚假多线程的java源代码
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接口,本质上来说,我们这个多线程,是假冒伪劣的虚假产品,因此,它不能并行运转,也是情理之中。
原文地址:http://blog.csdn.net/ffm83/article/details/44753549