java基础24 多线程(Thread)

1.1、进程

    正在执行的程序称作为一个进程.进程负责了内存空间的划分

 疑问1:windows电脑称之为多任务的操作系统,那么Windows是同时运行多个应用程序呢?
    从宏观的角度:windows确实在同时运行多个程序.
    从微观的角度:cpu是做一个快速的切换执行的动作,速度太快,所以你感觉不到切换而已.

1.2、线程

    线程在一个进程中负责了代码的执行,进程中的一个执行路径

1.3、多线程

    在一个进程中有多个线程同时在执行不同的任务

疑问2:线程负责了代码的执行,我们之前没有学过线程,为什么代码可以执行?
   任何一个java程序,在jvm运行时都会创建一个main线程执行main方法中的所有代码.

1.4、多线程好处

    1.解决一个进程中能执行多个任务的问题.
    2.提高了资源的利用率

1.5、多线程弊端

    1.增加了cpu的负担
    2.降低了一个进程中的线程执行的概率
    3.引发了线程安全问题
    4.出现死锁的现象

1.6、创建多线程的方式

方式一:
    1.自定义一个类继承Thread类
    2.重写Thread的类里面的run方法,自定义线程的代码写在run方法里面
    3.创建Thread的子类对象,并且调用start方法开启线程.

  注意:一个线程一旦开启,那么这个线程就会执行run方法中的代码,run方法千万不要直接调用,如果直接调用它就相当于一个普通方法,就不会开启新的线程。

疑问3: 重写run方法的目的是什么?
   每个线程都有自己的任务代码,jvm创建主线程的任务代码就是main方法中的所有代码,自定义线程的任务代码,需要写在run方法里面,自定线程负责run方法中的代码

1.7、实例

 1 package com.zn.thread;
 2 
 3 /**
 4  * @author DSHORE / 2018-5-3
 5  *
 6  */
 7 /*创建多线程的方式
 8  *     方式一:
 9  *      1.自定义一个类继承Thread类
10  *      2.重写Thread的类里面的run方法,自定义线程的代码写在run方法里面
11  *     3.创建Thread的子类对象,并且调用start方法开启线程.
12  *
13  *     注意:一个线程一旦开启,那么这个线程就会执行run方法中的代码,run方法千万不要直接调用,如果直接调用它就相当于一个普通方法,就不会开启新的线程.
14  * 
15  * */
16 public class Demo1 extends Thread {//1.自定义一个类继承Thread类
17     @Override
18     public void run() {//2.重写Thread的类里面的run方法,自定义线程的代码写在run方法里面
19         for(int i=0;i<100;i++){
20             System.out.println("自定义线程"+i);
21         }
22     }
23     public static void main(String[] args) {
24         Demo1 d=new Demo1();//3.创建Thread的子类对象,并且调用start方法开启线程.
25         d.start();
26         
27         for(int i=0;i<100;i++){
28             System.out.println("主线程"+i);
29         }
30     }
31 }

运行结果图: 注:每次的运行结果都不一样,线程问题

原创作者:DSHORE

出自:http://www.cnblogs.com/dshore123/

欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!

猜你喜欢

转载自www.cnblogs.com/dshore123/p/8984060.html