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/ 欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!) |