1.线程在基本概念

1)        线程是一个程序内部的顺序控制流。简单说线程就是程序中执行的路径。

2)        进程的理解就是程序运行的主线程,也就是即将要开始运行的线程。

3)        线程和进程的区别:

a)        每个进程都有独立代码和数据空间(进程上下文),进程间的切换会有较大的开销。

b)        线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。

c)        多进程:在操作系统中能同时运行多个任务(程序)。

d)        多线程:在同一个应用程序中有多个顺序流同时执行。

4)        Java的线程是通过java.lang.Thread类来实现的。

5)        VM启动时会有一个由主方法(publicstatic void main(){})所定义的线程。

6)        可以通过创建Thread的实例来创建新的线程。

7)        每个线程都是通过某个特定Thread对象对应的方法run()来完成其操作的,方法run()称为线程体。

8)        通过调用Thread类的start()方法来启动一个线程。

2.基本的线程机制

2.1定义任务

线程可以驱动任务,因此你需要一种描述任务的方式,这可以由Runnable接口提供。要想定义任务,只需要实现Runnable接口并编写run()方法,使得任务可以执行你的命令。

class Runner1 implements Runnable
{@Overridepublic void run(){for (int i = 0; i < 100; i++){System.out.println("Runner1 : " + i);}}}

2.2Thread类

Thread类的使用有两种:

1)        可以定义一个Thread的子类并重写其run方法如:

class MyThread extends Thread

{

public void run{….}

}

2)        将Runnable对象转换为工作任务的传统方式是把它提交给一个Thread构造器。如:

Thread t = new Thread(Runnable r);

2.2.3创建线程例子

下面我们创建的例子,主要是继续Thread类的线程,和实现Runnable接口的线程。这里笔者强调的是,能够使用实现接口实现的尽量使用接口。当然这两中方式都需要我们去重写run的方法。只是有点不一样的是,使用Runnable的接口,如果你没有new Threade,将Runnable对象放入Thread中,那个只是方法调用,也就是依然在一条的线程上调用。而如果我们使用到Thread类,说明我们告诉CPU开启一条新的线程,这个时候CPU依然是单线程运行,只是CPU线程或快速切换多个新创建的线程之间,就好像是多线程在运行。

package com.owen.thread;/*** 同步线程与异步线程应用* @author OwenWilliam 2016-7-21* @since* @version v1.0.0**/
public class TestThread1
{public static void main(String[] args){Runner1 r = new Runner1();//使用该方法是线程方法,只会执行好了r.run()方法之后才会执行下一个线程//r.run();//开启一个新的线程,执行这个线程,其它线程也可以执行,也就是一起执行Thread t = new Thread(r);t.start();for (int i = 0; i < 100; i++){System.out.println("Main Thread : ------" + i);}}}/*** 创建一个Runner1引用 Runnable的接口,重写run方法* 提倡使用Runnable接口* @author OwenWilliam 2016-7-21* @since* @version v1.0.0**/
class Runner1 implements Runnable
{@Overridepublic void run(){for (int i = 0; i < 100; i++){System.out.println("Runner1 : " + i);}}}/***  创建Runner2继承Thread,调用:* Runner2 r = new Runner2();* r.start();* 执行与 Thread t = new Thread(r);t.start();一样* @author OwenWilliam **/
class Runner2 extends Thread
{@Overridepublic void run(){for (int i = 0; i < 100; i++){System.out.println("Runner2 : " + i);}}}

Java多线程机制(一)相关推荐

  1. Java实用教程笔记 Java多线程机制

    Java多线程机制 泛型要考,后来又说不考了 多线程不考 12.1 进程与线程Process and Thread 12.2Java中的线程Threads in Java 线程的状态与生命周期The ...

  2. java显示多个地区时钟_妙用Java多线程机制实现多个时区时钟显示

    妙用Java多线程机制实现多个时区时钟显示 [摘要]在许多公共场合下,需要提供时钟显示,如机场.火车站.汽车站.酒店等,特别是一些需要接待外宾的场所,处理显示本地区时间以外还必须显示其他时区时间.本文 ...

  3. 浅谈Java多线程机制

    浅谈Java多线程机制 (-----文中重点信息将用红色字体凸显-----) 一.话题导入 在开始简述Java多线程机制之前,我不得不吐槽一下我国糟糕的IT界技术分享氛围和不给力的互联网技术解答深度. ...

  4. java多线程机制2(安全问题)

    线程状态图: ================================================================================= /* * 线程安全问题 ...

  5. java多线程机制计时器_java多线程定时器与单例模式

    定时器与单例模式 本次更新的主要内容是多线程中的定时器Timer和单例模式,本来打算分两次更新的,这次就在一起更新了.这次更新完之后,多线程的基础理论知识系列就完结了,后续会发布Mysql的内部技术分 ...

  6. Java多线程(详细了解java多线程机制)

    每天进步一点点 一.程序.进程.线程 1.1 什么是程序 1.2 什么是进程 1.3 什么是线程 1.4 进程和线程的区别 二.创建线程的三种方式 2.1 继承Thread类重写run()方法 具体实 ...

  7. java多线程机制_Java的多线程机制

    1.利用Thread的子类创建线程 例1.用Thread子类创建多线程程序. 先定义一个Thread的子类,该类的run方法只用来输出一些信息. packagethread;public class ...

  8. JAVA多线程机制之死锁

    同步特性使用起来非常方便,功能很强大.但有的时候考虑不周的话有可能出现线程死锁.死锁主要是多个线程争抢资源造成的. 下面通过一个例子演示死锁: class Resource {private int ...

  9. Servlet多线程机制

    摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍. ...

  10. Java多线程【三种实现方法】

    java多线程 并发与并行 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行 并行:一组程 ...

最新文章

  1. textview html字体颜色变粗,安卓使用Html实现textview部分字体变色加粗的效果(使用Html实现多种字体效果)-Go语言中文社区...
  2. ios android 内存不足,怎样解决手机内存不足?iOS系统可以试试这些方法
  3. JDK7新特性简单翻译介绍
  4. asp.net广告控件的使用
  5. Linux 嵌入式启动以及优化(Z)
  6. EF另一个 SqlParameterCollection 中已包含 SqlParameter。
  7. mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)
  8. java 系统自动检测_如何在Java中检测OS(操作系统)名称?
  9. 嵌套高度问题_excel查找技巧:嵌套函数在区间查找中的应用解析
  10. OSS开源软件是什么
  11. 抽象代数学习笔记二《群:群的例子》
  12. 制作字幕.html教程,如何制作电影字幕,视频字幕制作软件|免费给视频加字幕
  13. uva10105 - Polynomial Coefficients(多项式系数)
  14. spotlight搜索失效_如何在iPhone和iPad上自定义Spotlight搜索
  15. 每个数据科学家都应该知道的10种机器学习方法
  16. 《降龙之剑》刷马坐标 BOSS坐标,鉴定出好马的时间段
  17. APISpace 预热开启
  18. 汇总:web前端优化网页加载速度
  19. H3C 路由器交换机模拟器
  20. Java基础 DAY07

热门文章

  1. centos7 网卡命名
  2. lintcode-397-最长上升连续子序列
  3. poj2182-Lost Cow
  4. 【转载】C#字符串测试---------字符串截取,字符串分割
  5. 原来查询语句还有这功能,累计变量值
  6. 在sqlyog中创建MySQL触发器简单实例
  7. PIM SSM技术原理与实验
  8. Linux磁盘管理实战
  9. nyoj--58--最少步数
  10. 【大数据】Hbase如何批量删除指定数据