线程:

  进程是一个正在运行的程序,例如电脑上现在在运行的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. leetcode-algorithms-27 Remove Element

    leetcode-algorithms-27 Remove Element Given an array nums and a value val, remove all instances of t ...

  2. Oracle11g温习-第十四章:约束( constraint )

    2013年4月27日 星期六 10:48 1.约束的功能 通过一些强制性商业规则,保证数据的完整性.一致性 2.约束的类别 1 )  not null    不允许为空     2 )  check  ...

  3. python 小练习 5

    Py从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992, 这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和 ...

  4. UI基础四:简单的assign block

    经常会有需求让在标准的order加个assign block,那就来简单说一下: 1.创建assign block组件ZXXXXXX 2.添加BTORDER节点和GUID属性 3.创建表视图(可配置, ...

  5. oracle having sum group by 详解

    Aggregate functions (like SUM) often need an added GROUP BY functionality. 集合函数(类似SUM)经常需要用GROUP BY来 ...

  6. 4.Liunx磁盘管理

    1.磁盘管理:df .du 2.磁盘加载:mount. umount 3.磁盘分区:fdisk 1.df -h 查看硬件

  7. Mysql SQL优化系列之——执行计划连接方式浅释

    关系库SQL调优中,虽然思路都是一样的,具体方法和步骤也是大同小异,但细节却不容忽视,尤其是执行计划的具体细节的解读中,各关系库确实有区别,特别是mysql数据库,与其他关系库的差别更大些,下面,我们 ...

  8. java 中多播、广播编程

    在 IP 协议层,有多播.广播的概念.IP 地址分为网络地址和主机地址,主机地址全部为1,就是广播地址.多播使用 D 类地址,从 224.0.0.0 到 239.255.255.255.IP 多播需要 ...

  9. Linux确认网口对应配置文件

    服务器经常是多网卡多网口,我们在某个网口插上网线后,到/etc/sysconfig/network-scripts/下配置ip时需要确定插上网线的网口对应的是哪个配置文件(比如是eth0还是eth1) ...

  10. nginx源码安装教程(CentOS)

    1.说明 官方源码安装说明:http://nginx.org/en/docs/configure.html 源码包下载地址:http://nginx.org/en/download.html 版本说明 ...