一. 基础知识

要了解多线程首先要知道一些必要的概念,如进程,线程等等。开发多线程的程序有利于充分的利用系统资源(CPU资源),使你的程序执行的更快,响应更及时。

1. 进程,一般是指程序或者任务的执行过程(是动态执行的)。

2. 线程,一个线程包含多个线程(例如你打开一个word文档这就是一个进程。word里面的写入,拼写检查等等就是一个一个的线程)。

3. 进程包含线程,线程共享进程的资源(内存)

4. 线程的交互,线程在工作时往往需要正确的通信才能完成任务。

5. 互斥,如某线程抢占了CPU资源,其它的线程都要进入等待状体。

6. 同步,就是指共同,协同,互相配合的完成某一项任务。

二. Java多线程

线程的创建有两种方法,一种是继承Thread类,另一种是实现Runnable接口

1. Thread类常用的方法

<1>. 构造方法

Thread()

Thread(String name)

Thread(Runnable target)

Thread(Runnable target, String name)

<2>. 常用Thread类方法

启动线程  void start

线程随眠  static void sleep(long millis)

使其它线程等待当前线程终止  void join()  ; void join(long millis) ;  void join(long millis, int nanos)

使当前运行的线程施放处理器资源  static void yield

获取当前运行的线程引用  static Thread currentThread

2. 两种线程实现方法事例代码

package com.bochao.thread;

class Actress implements Runnable{

	@Override
public void run() { int count = 0;
boolean keepRunning = true;
System.out.println(Thread.currentThread().getName() + "开始....");
while(keepRunning){
System.out.println(Thread.currentThread().getName() + "计数:" + (++count));
if(count == 100){
keepRunning = false;
}
if(count % 10 == 0){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println(Thread.currentThread().getName() + "结束!");
}
} public class ConcurrentDemo extends Thread { @Override
public void run() { int count = 0;
boolean keepRunning = true;
System.out.println(getName() + "开始");
while(keepRunning){
System.out.println(getName() + "计数:" + (++count));
if(count == 100){
keepRunning = false;
}
if(count % 10 == 0){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println(getName() + "结束!");
} public static void main(String[] args) { Thread actor = new ConcurrentDemo();
actor.setName("张三");
actor.start(); Thread actress = new Thread(new Actress(), "李四");
actress.start();
} }

3. 网上找了学习多线程的需要了解的知识体系,学习路线如下:

1. Java Memory Mode
2. Locks 和 Condition 类对象
3. 线程安全性
4. 多线程常用交互模型(Producer-Consumer模型, Read-Write Lock模型,Future模型,Worker Thread模型)
5. Java5中并发编程工具(java.util.concurrent,线程池ExcutorService,Callable和Futrue,BlockingQueue)
6. 推荐两本书:Java核心技术(多线程篇), Java concurrency IN Practice

JAVA多线程基础知识(一)的更多相关文章

  1. Java 多线程——基础知识

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  2. Java多线程基础知识笔记(持续更新)

    多线程基础知识笔记 一.线程 1.基本概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是 ...

  3. Java多线程基础知识总结

    2016-07-18 15:40:51 Java 多线程基础 1. 线程和进程 1.1 进程的概念 进程是表示资源分配的基本单位,又是调度运行的基本单位.例如,用户运行自己的程序,系统就创建一个进程, ...

  4. Java多线程基础知识篇

    这篇是Java多线程基本用法的一个总结. 本篇文章会从一下几个方面来说明Java多线程的基本用法: 如何使用多线程 如何得到多线程的一些信息 如何停止线程 如何暂停线程 线程的一些其他用法 所有的代码 ...

  5. Java多线程基础知识总结笔记

    本篇笔记记录一些在Java多线程编程中常见的关键字,比较简单和基础的就不写太详细了. 一.Thread类(其实也是应用了Runnable接口)和Runnable接口(只有一个run方法,应用该类必须重 ...

  6. Java多线程基础知识例子

    一.管理 1.创建线程 Thread public class Main { public static void main(String[] args) { MyThread myThread = ...

  7. Java多线程基础知识(二)

    一. Java线程具有6种状态  NEW 初始状态,线程被创建,但是还没有调用start方法. RUNNABLE 运行状态,java线程将操作系统中的就绪和运行两种状态笼统的称作进行中. BLOCKE ...

  8. Java多线程-基础知识

    一. 进程是执行中的程序,程序是静态的(我们写完以后不运行就一直放在那里),进程是执行中的程序,是动态概念的.一个进程可以有多个线程. 二. 多线程包含两个或两个以上并发运行的部分,把程序中每个这样并 ...

  9. Java多线程基础知识(五)

    一. Java中的13个原子操作类 在Jdk1.5中,这个包中的原子操作类提供了一种用法简单,性能高效,线程安全的更新一个变量的方式. 1. 原子更新基本类型类 AtomicBoolean : 原子更 ...

随机推荐

  1. Microsoft SQL Server Management Studio ------------------------------ 附加数据库 对于 服务器

    http://zhidao.baidu.com/link?url=didvEEY86Kap_F9PnRAJMGoLXv63IW1fhElfiOpkkmalJ9mvZoqNULlGKcGHN31y_4z ...

  2. js007-函数表达式

    js007-函数表达式 本章内容 1.函数表达式的特征 2.使用函数实现递归 3.使用闭包定义私有量 定义函数的方式有两种:一:函数声明,二:函数表达式 函数声明: function function ...

  3. CURL函数的GET和POST方式的两种写法(实现ajax跨域调用)

    POST请求 function curl_post($url='',$postdata='',$options=array()){ $ch=curl_init($url); curl_setopt($ ...

  4. C# “配置系统未能初始化” 异常解决

    使用App.config配置参数,读取参数出现错误 “System.Configuration.ConfigurationErrorsException”类型的未经处理的异常在 System.Conf ...

  5. OpenGL Pixel Linked-List

    Keywords: opengl linked list http://on-demand.gputechconf.com/gtc/2014/presentations/S4385-order-ind ...

  6. Google

    1. Google Play: Google Play是谷歌官方的的应用市场, Google Play 服务通常会在 Android 装置上自动更新. http://baike.baidu.com/l ...

  7. Robot Framework--08 List Variables-List变量及其用法

    转自:http://blog.csdn.net/tulituqi/article/details/7907981 一.List变量及其用法 在我们前面几篇文章里用到了很多List变量,相信以后各位也会 ...

  8. yii2 登录、退出、自动登录

    自动登录的原理很简单.主要就是利用cookie来实现的在第一次登录的时候,如果登录成功并且选中了下次自动登录,那么就会把用户的认证信息保存到cookie中,cookie的有效期为1年或者几个月. 在下 ...

  9. Android Studio 连接真机不识别

    本人也是初学..写错的请大神多多批评指正! 不胜荣幸!! 强烈推荐使用真机测试..除非是最后关头要测试各个Android系统版本.. 本人遇到的连不上的原因有以下几种: 1  --   手机设置问题. ...

  10. EF框架之三种模式

    使用EF之前必须要对EF有个宏观的了解.学习任何一种技术都要像门卫一样问几个问题. 第一,它是谁? 第二,从哪里来? 第三,到哪里去? 默念一遍:不谋全局者,不足谋一域. Entity Framewo ...