java线程初始

java线程初始
线程的概念
 
程序和进程的区别
 
程序是静态的,进程是动态的,程序是存储在某种介质上的二进制代码,进程对应了程序的执行过程,系统不需要为一个不执行的程序创建进程,一旦进程被创建,就处于不断变化的动态过程中,对应了一个不断变化的上下文环境。
 
程序是永久的,进程是暂时存在的。程序的永久性是相对于进程而言的,只要不去删除它,它可以永久的存储在介质当中。
 
进程与线程的区别
 
(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位
 
(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行
 
(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。
 
(4)系统开销:在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。
 
串行,并发和并行
 
串行 多个指令从上到下依次执行,
 
并发 每个线程会经行抢占时间片,所以会有来回切换的效果 但不是同时进行,没有时间安排会是等待的状态
 
并行 多个cpu内核同时执行多个线程,相互不影响且同时进行
 
线程的实现
 
java四种实现线程的方式
 
继承Thread类
 
实现Runnable接口
 
实现Callable接口
 
使用线程池
 
继承Thread类
 
继承Thread类
 
重写run方法
 
调用start启动线程
 
案例实现1
 
设计两个线程,一个线程负责打印1——100以内所有的偶数;然后,另外一个线程负责打印1——100以内所有的奇数。
 
class Thread1 extends Thread{
 
    public void run(){
 
        for (int i = 0; i <=100 ; i+=2) {
 
            System.out.println(Thread2.currentThread()。getName()+"奇数"+i);
 
        }
 
    }
 
}
 
 
class Thread2 extends Thread{
 
    public void run(){
 
        for (int i = 0; i <=100 ; i+=2) {
 
            System.out.println(Thread2.currentThread()。getName()+"偶数"+i);
 
 
        }
 
    }
 
}
 
public class ZuoYe1 {
 
 
    public static void main(String[] args) {
 
        Thread1 t1=new Thread1();
 
        Thread2 t2=new Thread2();
 
        t1.setPriority(Thread.MIN_PRIORITY);
 
        t2.setPriority(Thread.MAX_PRIORITY);
 
        t1.start();
 
        t2.start();
 
 
    }
 
}

推荐阅读