码迷,mamicode.com
首页 > 编程语言 > 详细

多线程

时间:2018-03-11 17:49:57      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:javac   alt   param   world   http   post   nbsp   代码   引用   

  1. 线程是进程中的内容
  2. 每个程序中都必须有线程,因为线程是程序中的控制单元
  3. 进程:是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元
  4. 线程:就是进程中一个独立的控制单元,线程在控制着进程的执行
  5. 一个进程中至少有一个线程
  6. 命令行编译java:

 

Cd是进入子目录,首先是javac 编译成为.class文件,之后在运行java

  1. java VM(java虚拟机)启动的时候就会有一个进程java.exe,该进程中至少有一个线程负责java程序的执行,并且这个线程运行的代码存在于main方法中,该线程称之为主线程
  2. 扩展:更细节说明jvm,jvm启动不止一个线程,还有负责垃圾回收机制的线程
  3. 通过对api的查找,Java.lang 中的类Thread 创建线程

 

第一种创建线程的方式:继承Thread类,复写run方法(目的:将自定义的代码存储在run方法中,让线程运行),调用线程的start方法,该方法有两个作用:(1)启用线程(2)调用run方法

  1. 双核CPU :好多程序可以同时跑起来,更快。
  2. 发现运行结果每一次都不同:因为多个线程都在获取CPU的执行权,cpu执行到谁,谁就运行。明确一点,在某一个时刻,只能有一个程序在运行(多核除外)
  3. CPU在做着快速的切换,以达到看上去相同运行的效果。我们可以形象的把多线程的运行行为在互相抢夺cpu的执行权,这就是多线程的一个特性:随机性,谁抢到谁执行,至于执行多长时间,cpu说的算
  4. 为什么覆盖run方法?

Thread类用于描述线程,该类就定义了一个功能,用于存储线程要运行的代码,该存储的功能就是run方法,也就是说Thread类中的run方法,用于存储线程要运行的代码

虚拟机定义了主线程,在main中

 

注意在多线程中调用继承了Thread的类  调用.strat()方法和.run()方法的区别:

  • d.start(); // 开启线程并执行该线程的run方法
  • d.run();//仅仅是对象调用方法,线程创建了但并未运行

代码例子:

package sxy;

class Demo extends Thread {
    public void run() { // 重写run方法
        for(int i=0;i<20;i++){
            System.out.println("demo run"+i);
        }
        
    }

}

public class Helloworld {

    /**
     * @param args
     */

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Demo d = new Demo();  //创建了一个线程
        d.start();  // 开启线程并执行该线程的run方法
        //d.run();//仅仅是对象调用方法,线程创建了但并未运行
      
        for(int i=0;i<20;i++){
            System.out.println("hello world"+i);
        }

    }

}

技术分享图片

调用.start()每次运行的结果都是不一样的

技术分享图片

 

 调用.run()方法 则就是执行完run方法中的for循环,再执行main函数里面的for循环

 

线程的状态:

技术分享图片

 

 

Thread中的一些方法

1.Thread.currentThread(): 静态的 ,返回对当前正在执行的线程对象的引用 Thread.currentThread()=this   

2..getName() 得到当前线程的名字

3.设置线程的名称:.setName()或者构造函数

 

多线程

标签:javac   alt   param   world   http   post   nbsp   代码   引用   

原文地址:https://www.cnblogs.com/sunxiaoyan/p/8543985.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!