Java多线程机制(一)
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多线程机制(一)相关推荐
- Java实用教程笔记 Java多线程机制
Java多线程机制 泛型要考,后来又说不考了 多线程不考 12.1 进程与线程Process and Thread 12.2Java中的线程Threads in Java 线程的状态与生命周期The ...
- java显示多个地区时钟_妙用Java多线程机制实现多个时区时钟显示
妙用Java多线程机制实现多个时区时钟显示 [摘要]在许多公共场合下,需要提供时钟显示,如机场.火车站.汽车站.酒店等,特别是一些需要接待外宾的场所,处理显示本地区时间以外还必须显示其他时区时间.本文 ...
- 浅谈Java多线程机制
浅谈Java多线程机制 (-----文中重点信息将用红色字体凸显-----) 一.话题导入 在开始简述Java多线程机制之前,我不得不吐槽一下我国糟糕的IT界技术分享氛围和不给力的互联网技术解答深度. ...
- java多线程机制2(安全问题)
线程状态图: ================================================================================= /* * 线程安全问题 ...
- java多线程机制计时器_java多线程定时器与单例模式
定时器与单例模式 本次更新的主要内容是多线程中的定时器Timer和单例模式,本来打算分两次更新的,这次就在一起更新了.这次更新完之后,多线程的基础理论知识系列就完结了,后续会发布Mysql的内部技术分 ...
- Java多线程(详细了解java多线程机制)
每天进步一点点 一.程序.进程.线程 1.1 什么是程序 1.2 什么是进程 1.3 什么是线程 1.4 进程和线程的区别 二.创建线程的三种方式 2.1 继承Thread类重写run()方法 具体实 ...
- java多线程机制_Java的多线程机制
1.利用Thread的子类创建线程 例1.用Thread子类创建多线程程序. 先定义一个Thread的子类,该类的run方法只用来输出一些信息. packagethread;public class ...
- JAVA多线程机制之死锁
同步特性使用起来非常方便,功能很强大.但有的时候考虑不周的话有可能出现线程死锁.死锁主要是多个线程争抢资源造成的. 下面通过一个例子演示死锁: class Resource {private int ...
- Servlet多线程机制
摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍. ...
- Java多线程【三种实现方法】
java多线程 并发与并行 并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行 并行:一组程 ...
最新文章
- textview html字体颜色变粗,安卓使用Html实现textview部分字体变色加粗的效果(使用Html实现多种字体效果)-Go语言中文社区...
- ios android 内存不足,怎样解决手机内存不足?iOS系统可以试试这些方法
- JDK7新特性简单翻译介绍
- asp.net广告控件的使用
- Linux 嵌入式启动以及优化(Z)
- EF另一个 SqlParameterCollection 中已包含 SqlParameter。
- mysql 语句块语法_MySQL ------ MySQL常用语句的语法 (三十四)
- java 系统自动检测_如何在Java中检测OS(操作系统)名称?
- 嵌套高度问题_excel查找技巧:嵌套函数在区间查找中的应用解析
- OSS开源软件是什么
- 抽象代数学习笔记二《群:群的例子》
- 制作字幕.html教程,如何制作电影字幕,视频字幕制作软件|免费给视频加字幕
- uva10105 - Polynomial Coefficients(多项式系数)
- spotlight搜索失效_如何在iPhone和iPad上自定义Spotlight搜索
- 每个数据科学家都应该知道的10种机器学习方法
- 《降龙之剑》刷马坐标 BOSS坐标,鉴定出好马的时间段
- APISpace 预热开启
- 汇总:web前端优化网页加载速度
- H3C 路由器交换机模拟器
- Java基础 DAY07