线程:

  进程是一个正在运行的程序,例如电脑上现在在运行的qq,浏览器,电脑管家,这些都是进程

  线程就是每一个进程中的一个执行单元,每一个进程至少一个线程,可以有多个线程,例如浏览器上每一个打开的网页都是一个线程,电脑管家打开后,可以一边体检一边杀毒,一边清理垃圾,在这里边,体检、杀毒、清理垃圾每一个都是一个线程。

  一个程序运行至少一个进程,一个进程可以包含多个线程

  线程的具体体现:

  

public class Demoq {
public void run(){
for (int i = 0; i <50; i++) {
System.out.print("haha ");
}
}
}
public class Demo2 {
public void run(){
for (int i = 0; i <50; i++) {
System.out.print(i+"\t");
}
}
}
public class Test {
public static void main(String[] args) {
Demoq d1=new Demoq();
Demo2 d2=new Demo2();
d1.run();
d2.run();
}
} //程序从上向下执行,先执行d1.run()方法,d2.run()方法等d1.run()执行完后才执行,运行结果是先输出50遍haha,再输出1-50,运行结果:
  /*haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   haha   0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49 */ 

java使用多线程就是使类继承Thread类,然后在当前类下重写run方法,调用时使用引用类型变量.start()开启线程

具体写法如下

public class Demo1 extends Thread{
public void run() {
for (int i = 0; i <50; i++) {
System.err.println("啊哈哈哈");
}
}
}
public class Demo2 extends Thread {
public void run() {
for (int i = 0; i <50; i++) {
System.out.println("====");
}
}
}
public class Test {
public static void main(String[] args) {
Demo1 d1=new Demo1();
Demo2 d2=new Demo2();
d1.start();//开启线程
d2.start();//开启线程
}//本例中,两个方法同时运行,运行结果如下:
}/*啊哈哈哈================啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈============================================================================啊哈哈哈========================================啊哈哈哈====================================================================啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈啊哈哈哈*/

从上面结果可以看出,程序运行时,先运行d1,然后又运行d2一段时间,然后又运行d1一段时间,即两个线程一块运行,提高了cpu的利用率;

线程简述(Thread)的更多相关文章

  1. java并发编程学习: 守护线程(Daemon Thread)

    在正式理解这个概念前,先把 守护线程 与 守护进程 这二个极其相似的说法区分开,守护进程通常是为了防止某些应用因各种意外原因退出,而在后台独立运行的系统服务或应用程序. 比如:我们开发了一个邮件发送程 ...

  2. Java 使用线程方式Thread和Runnable,以及Thread与Runnable的区别

    一. java中实现线程的方式有Thread和Runnable Thread: public class Thread1 extends Thread{ @Override public void r ...

  3. 【转】线程、Thread类和线程终止

    一.线程Thread启动 0. Thread类实现了java.lang.Runnable接口,即实现了run方法.虽然在Sun JDK中,start()调用了start0()方法,start0()方法 ...

  4. java学习笔记之线程(Thread)

    刚开始接触java多线程的时候,我觉得,应该像其他章节的内容一样,了解了生命周期.构造方法.方法.属性.使用的条件,就可以结束了,然而随着我的深入学习了解,我发现java的多线程是java的一个特别重 ...

  5. 7种创建线程方式,你知道几种?线程系列Thread(一)

    前言 最近特别忙,博客就此荒芜,博主秉着哪里不熟悉就开始学习哪里的精神一直在分享着,有着扎实的基础才能写出茁壮的代码,有可能实现的逻辑有多种,但是心中必须有要有底哪个更适合,用着更好,否则则说明我们对 ...

  6. 从源码解读线程(Thread)和线程池(ThreadPoolExecutor)的状态

    线程是比进程更加轻量级的调度执行单位,理解线程是理解并发编程的不可或缺的一部分:而生产过程中不可能永远使用裸线程,需要线程池技术,线程池是管理和调度线程的资源池.因为前不久遇到了一个关于线程状态的问题 ...

  7. 14.并发与异步 - 1.线程处理Thread -《果壳中的c#》

    14.2.1 创建一个线程 实例化一个Thread对象,然后调用它的Start方法,就可以创建和启动一个新的线程.最简单的Thread构造方法是接受一个ThreadStart代理:一个无参方法,表示执 ...

  8. 线程(Thread,ThreadPool)、Task、Parallel

    线程(Thread.ThreadPool) 线程的定义我想大家都有所了解,这里我就不再复述了.我这里主要介绍.NET Framework中的线程(Thread.ThreadPool). .NET Fr ...

  9. JAVA并发编程——守护线程(Daemon Thread)

    在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称 ...

  10. python全栈开发 * 线程锁 Thread 模块 其他 * 180730

    一,线程Thread模块1.效率更高(相对于进程) import time from multiprocessing import Process from threading import Thre ...

随机推荐

  1. centos7 --kubeadm安装

    One or more machines running one of: Ubuntu 16.04+ Debian 9 CentOS 7 RHEL 7 Fedora 25/26 (best-effor ...

  2. 【基础知识】【1】CDN

    正文: CDN:Content Delivery Network,内容分发网络.使用户访问离ta最近的资源服务器,优化访问速度 优点: 1,内容可以共享,不同站点的同一文件可以不用多次缓存 2,增加下 ...

  3. react中直接调用子组件的方法(非props方式)

    我们都知道在 react中,若要在父组件调用子组件的方法,通常我们会采用在父组件定义一个方法,作为props转给子组件,然后执行该方法,可以获取到子组件传回的参数以得到我们的目的. 显而易见,这个执行 ...

  4. Linux下使用mail发送邮件

    邮件常常是Linux下监控报警手段之一.Linux下的mail命令可以方便,快速的完成发送邮件.下面以CentOS为例 1.安装 [root@vm8028 ~]# mail -bash: mail: ...

  5. 509. Fibonacci Number斐波那契数列

    网址:https://leetcode.com/problems/fibonacci-number/ 原始的斐波那契数列 运用自底向上的动态规划最佳! 可以定义vector数组,但是占用较多内存空间 ...

  6. Utils--字符串的帮助类

    Utils--字符串的帮助类 一个关于字符串过滤的工具类,主要时针对username和password的过滤 package com.bw.yun.utils; import java.securit ...

  7. 2015-09-16 html课程总结1

    HTML (HyperText Makeup Language)是超文本标记语言. 1.HTML结构 <html> <head> <title>标题</tit ...

  8. Ubuntu下环境变量的设置

    远程登录时,不是ssh登陆:  xrdp 可以修改并添加 /etc/xrdp/startwm.sh 代码: #!/bin/sh if [ -r /etc/default/locale ]; then  ...

  9. java ArrayList 迭代器快速失败源码分析

    先来看一个例子: @Test void test2() { ArrayList<String> list = new ArrayList<String>(); list.add ...

  10. 003-RHEL7-Linux系统维护管理命令使用

    系统维护管理命令: date  查看日期,设置日期 只有超级用户才能用date命令设置时间 date  --help  显示时间的帮助命令 date{选项} 显示时间格式(以+开头,后面接时间格式) ...