您的位置:首页 > 编程语言 > Java开发

1、java 线程与并发程序编写--线程本质

2011-11-21 11:56 351 查看
    很多同行在利用java开发时,普遍感觉其多线程机制,以及并发程序的编写存在诸多困难;同时java 5以后出现的并发特性,由于资料相对较少及深入度不足的原因,很多筒子们还是感觉一些困难,本系列文章力图从基础开始,全面及深入(吹吹)对其使用进行阐述,欢迎拍砖:

        可以将JVM理解为一台计算机,而其包括“内存和CPU时间”资源。那么某个对象实例的方法执行可以理解为:“在其方法执行栈中(内存),利用JVM的时段(时间)来运行”。

        没接触线程时,可以认为JVM的全部时间归方法在执行期间全部占用(当然还会有一个gc的线程,在JVM上执行)。

        多线程程序编写的第一个要理解的是:如何使用JDK中的API“通知”JVM,代码是要“分时并发”运行的。

        其“原始”的核心API为:Thread。我们就是用它的实例的“start()方法”来“通知”JVM,其中的“void run()”方法中的代码,是“分时并发执行”的(呵呵,不能调用run,否则JVM不会知道它是要分时执行的)。

代码1-1:

public static void main(String[] args) {
System.out.println("main 的线程开始");
new Thread(){
@Override
public void run() {
System.out.println("新 的线程开始");
System.out.println("新 的线程结束");
}

}.start();//通知JVM分时执行上面的run方法
System.out.println("main 的线程结束");
}


    代码在第10行会通知JVM需要分时执行匿名线程对象的run方法中的代码6,7行,即我们可以用专业的术语讲“让一个线程对象处于就绪状态(可执行态runnable)”,而此时JVM既可以选择继续执行当前线程也可以选择执行这个就绪线程(有自己的调度规则)。看下执行结果:可以说明“JVM现在并不是以流水线方式顺序执行四个打印语句”

main 的线程开始

main 的线程结束

新 的线程开始


新 的线程结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息