进程:一个正在执行的程序,每一个进程都有一个执行顺序,该
顺序是一个执行路径,或者叫一个控制单元。
线程:进程中一个独立的控制单元。线程控制着进程的执行。
一个进程中至少有一个线程。

java VM中至少有一个线程负责java程序的执行。
而且这个线程运行的代码存在于main方法中。该线程为主线程。

扩展,jvm启动了两个线程,一个主线程,一个垃圾回收机制的线程。

1.怎样创建一个多线程?
第一种方法:通过继承Thread类的方法
1.继承Thread类
2.重写Thread类的run()方法
目的:将自定义的代码存储在run()方法中,让线程运行。
3.调用线程的start()方法。
(了解:多核编程,单核cpu的时候多线程的切换由线程控制,多核cpu下
则每个cpu可以同时处理多线程,单个cpu在同一时间只能执行一个线程,
多核下内存是瓶颈)

多线程具有随机性:
因为多线程都获取cpu的执行权。cpu执行到谁,谁就执行。明确一点,在某一时刻
只能有一个程序在运行。(多核除外),cpu在做着快速的切换,以达到看上去是同
事运行的效果。至于每个线程执行多久,cpu说了算,(其实我们可以控制执行时间爱你)
为什么要覆盖run()方法?
Thread类用于描述线程。该类定义了一个功能,用于存储线程要运行的代码。该存储功能就是run方法。
也就是说Thread类中的run()方法用于存储线程要运行的代码。

//实例:
class Demo extends Thread
{
public void run(){
for(int x=0;x<200;x++){
System.out.println("run--------------"+x);
} } } class ThreadDemo
{
public static void main(String[] args)
{
Demo d=new Demo();//创建好了一个线程 /*
d.start()和d.run()的区别?
*/
d.start();//开启线程并执行该线程的run()方法。运行线程是随机的
//d.run();//仅仅是对象调用方法。线程创建了,却并没有运行。运行的结果每次都是一样的。 for(int x=0;x<200;x++){
System.out.println("HelloWold----------"+x);
}
}
}

java用Thread方式创建多线程的更多相关文章

  1. Java基础 继承的方式创建多线程 / 线程模拟模拟火车站开启三个窗口售票

    继承的方式创建多线程 笔记: /**继承的方式创建多线程 * 线程的创建方法: * 1.创建一个继承于Thread 的子类 * 2.重写Thread类的run()方法 ,方法内实现此子线程 要完成的功 ...

  2. Java分享笔记:创建多线程 & 线程同步机制

    [1] 创建多线程的两种方式 1.1 通过继承Thread类创建多线程 1.定义Thread类的子类,重写run()方法,在run()方法体中编写子线程要执行的功能. 2.创建子线程的实例对象,相当于 ...

  3. java 线程Thread 技术--创建线程的方式

    在第一节中,对线程的创建我们通过看文档,得知线程的创建有两种方式进行实现,我们进行第一种方式的创建,通过继承Thread 类 ,并且重写它的run 方法,就可以进行线程的创建,所有的程序执行都放在了r ...

  4. 创建多线程的方式:继承Thread类和实现Runnable接口

    1.通过继承Thread类的方式创建多线程(这里只是简单的代码演示创建多线程的方法) package com.baozi.exer; public class ThreadDemo { public ...

  5. java创建多线程的三种方式

    /***************************继承Thread类创建多线程************************/ public class FirstThread extends ...

  6. java创建多线程(转载)

    转载自:Java创建线程的两个方法 Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对 ...

  7. 多线程01.newThread的方式创建线程

    1.java应用程序的main函数是一个线程,是被jvm启动的时候调用,线程的名字叫main 2.实现一个线程,必须创建一个thread实例,override run方法,并且调用start方法. 3 ...

  8. Java 线程--继承java.lang.Thread类实现线程

    现实生活中的很多事情是同时进行的,Java中为了模拟这种状态,引入了线程机制.先来看线程的基本概念. 线程是指进程中的一个执行场景,也就是执行流程,进程和线程的区别: 1.每个进程是一个应用程序,都有 ...

  9. Java OOP——第七章 多线程

    1.进程:是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间): Eg:用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间.当用户再次点击左面的IE浏览器, ...

随机推荐

  1. Android兼容包之MultiDex

    一.MultiDex的产生背景 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt.DexOpt的执行过程是在第一次加载Dex文件的时候执 ...

  2. 延时队列:Java中的DelayQueue

    Java中的DelayQueue位于java.util.concurrent包下,本质是由PriorityQueue和BlockingQueue实现的阻塞优先级队列. 放入队列的元素需要实现java. ...

  3. [C#][Quartz]添加监听器

    namespace Quartz.Listener { public class SchedulerListener : SchedulerListenerSupport { private stat ...

  4. PHP程序员的进阶之路

    第1阶段:初级PHP程序员 重点:把LNMP搞熟练(核心是安装配置基本操作)目标:能够完成基本的LNMP环境安装,简单配置维护:能够做基本的简单系统的PHP开发:能够在PHP中型系统中支持某个PHP功 ...

  5. 05-RARP: 逆地址解析协议

    具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取I P地址.但是无盘机,如X终端或无盘工作站,则需要采用其他方法来获得I P地址. 网络上的每个系统都具有唯一的硬件地址,它是由网络接口生产厂家 ...

  6. 00004 - CentOS 7下安装pptp服务端

    主要配置步骤 1. 安装前检查系统支持 a. 在安装之前查看系统是否支持PPTP modprobe ppp-compress-18 && echo success 应该输出:succe ...

  7. java.util.stream 库简介

    Java Stream简介 Java SE 8 中主要的新语言特性是拉姆达表达式.可以将拉姆达表达式想作一种匿名方法:像方法一样,拉姆达表达式具有带类型的参数.主体和返回类型.但真正的亮点不是拉姆达表 ...

  8. Android短信收发(二)

    接收SMS类,代码如下 //for receive SMS private SmsReceiver mSmsReceiver; @Override protected void onResume() ...

  9. Android收发短信

    效果:点击发送短信开始发送短信 收到短信时将短信的内容显示出来 代码如下: 一.权限声明 <uses-permission android:name="android.permissi ...

  10. 入坑机器学习?听听MIT在读博士的AI心得

    随着人工智能技术的火热,越来越多的年轻学者正准备投身其中,开启自己的研究之路.和所有其他学科一样,人工智能领域的新人总会遇到各种各样的难题,其中不仅有研究上的,也有生活方面的.MIT EECS 在读博 ...