=-=b又让我想起了以前操作系统的线程

 

— 进程是执行中的一段程序,而一个进程中执行中的每个任务即为一个线程

— 一个线程只可以属于一个进程,但一个进程能包含多个线程

— 线程无地址空间,它包括在进程的地址空间里

线程和线程可以有依赖关系也可以没有,一个线程挂了不会影响另一个线程。主线程开启子线程,主线程挂了,子线程不一定会挂。

Thread实现了Runnable接口

 

 

 

一个类继承了Thread可以用这个类的实例化对象开启一个线程。这个类必须重写run方法

package com.leehl.thread;

public class MyThread3 {
    public static void main(String[] args) {
        System.out.println(Thread.currentThread().getName());//main线程
        Menglei a = new Menglei();
        a.start();

    }
}
class Menglei extends Thread{
    int time;
    @Override
    public void run() {
        while (true) {
            try {
                Menglei.sleep(1000);    //可以使用Thread的Thread.currentThread().getName()方法获得线程名
                System.out.println("梦泪老师说扣1送地狱火"+(++time)+"线程名:"+Thread.currentThread().getName());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(time==8){
                break;
            }
        }

    }
}

 

 

 

 

 如果是a.run()那么程序会串行化执行,进程也都是main线程。

当执行start方法后,会在start中执行执行start0方法,start0方法底层是由JVM底层调用native方法,C/C++实现的

所以真正实现多线程效果的是start0()方法。

而start0()方法只是把这个线程变成了可运行状态,最终还是要看CPU的的调度算法,什么时候调用

public synchronized void start() {

start0();
}

start执行start方法后:

 

 

当一个类已经继承了一个父类后,没法继承Thread,我们可以实现Runnable接口来实现线性

                   

 

原文地址:http://www.cnblogs.com/leehl8016/p/16830475.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性