java线程详解
1.几个关键词的理解
并行(微观):两个或多个事件在同一时刻点发生。
并发:两个或多个事件在同一时间段内发生
进程:一个内存中运行中的程序,每个进程都有自己独立的一块空间。进程之间通信极不方便。一个进程中至少有一个线程(有独立的内存空间)
线程:进程中的一个执行任务,一个进程可以同时并发运行多个线程(堆空间是共享的,栈空间是独立的)
多进程:操作系统中同时运行多个程序(开销比较大)
多线程:在同一个进程中同时运行多个任务
线程调度:JVM负责线程调度(采用的是抢占式调度,没有采用分时调度)
2.创建进程
1)使用Runtime类(单例,没有构造器,使用getRuntime() 获得实例对象 )的exec方法
2)ProcessBuilder 的start() 方法。
3.创建和启动线程
1)继承Thread类(java.lang.Thread):只有Thread类和其子类才是线程类(main方法运行,表示主线程)
2)实现Runnable接口(java.lang.Runnable)
Thread类也实现了Runnable
创建一个A类实现Runnable接口,覆盖Runnable接口中的run方法,但是A类不是线程类,所以A不能直接调用线程类对象的start()方法
所以需要先创建一个Runnable接口的对象,再将其传给thead的对象
3)使用匿名内部类定义
4.两种创建和启动线程的方式的对比
实例:吃苹果比赛
1)继承方式
-—java中类是单继承的,继承Thread就不能继承其他类了
—操作上比较简单,获取线程的名字也简单
—从多线程共享同一个资源上分析,继承方式不能做到
2)实现方式
—java中可是多实现接口,此时还可以继承其他类
—操作上,实现方式比较复杂,获取线程名字也比较复杂,使用Thread.currentThread().getName()
—从多线程共享同一个资源上分析,实现方式不能做到
注意:推荐使用实现接口的方法
谢谢阅读!