一. 基础知识

要了解多线程首先要知道一些必要的概念,如进程,线程等等。开发多线程的程序有利于充分的利用系统资源(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

最新文章

  1. 1014 C语言文法
  2. SSIS包配置动态配置数据库连接
  3. 不靠谱的Paypal及海外网站
  4. hdu 3549 Flow Problem(增广路算法)
  5. 用Eclipse和GDB构建ARM交叉编译和在线调试环境
  6. 山东省济南市历城第二中学——洛谷图论入门题--基本题必做 图的遍历—3.骑马修栅栏(fence)
  7. canvas画一个时钟
  8. git日常使用经验积累
  9. TinySpring分析二
  10. codeforces 786E ALT
  11. 目标检测中的mAP
  12. 新项目增加gradlew
  13. 剑指offer(29)最小的K个数
  14. Java 开源博客 Solo 1.8.0 发布 - 改进文件上传
  15. pc网页中嵌入百度地图
  16. Python中的self和init
  17. linux集群时间同步搭建
  18. 金老师的经典著作《一个普通IT人的十年回顾》
  19. Jenkins发送邮件,邮件正文嵌套的html中文显示乱码
  20. Linux执行.sh文件,提示No such file or directory的问题的解决方法

热门文章

  1. mysql forget root password
  2. JavaWeb---总结(十四)JSP原理
  3. PHP 生成图片缩略图函数
  4. 10月21日上午MySQL数据库学习内容复习
  5. Runner站立会议02
  6. Runner站立会议01
  7. Java简单的系统登陆
  8. php瀑布流,把一个数组分4个数组,按照时间排序
  9. struts2 拦截器和actioninvocation、PreResultListener
  10. memcached的最佳实践方案(转)