JAVA多线程基础知识(一)
一. 基础知识
要了解多线程首先要知道一些必要的概念,如进程,线程等等。开发多线程的程序有利于充分的利用系统资源(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
最新文章
- 1014 C语言文法
- SSIS包配置动态配置数据库连接
- 不靠谱的Paypal及海外网站
- hdu 3549 Flow Problem(增广路算法)
- 用Eclipse和GDB构建ARM交叉编译和在线调试环境
- 山东省济南市历城第二中学——洛谷图论入门题--基本题必做 图的遍历—3.骑马修栅栏(fence)
- canvas画一个时钟
- git日常使用经验积累
- TinySpring分析二
- codeforces 786E ALT
- 目标检测中的mAP
- 新项目增加gradlew
- 剑指offer(29)最小的K个数
- Java 开源博客 Solo 1.8.0 发布 - 改进文件上传
- pc网页中嵌入百度地图
- Python中的self和init
- linux集群时间同步搭建
- 金老师的经典著作《一个普通IT人的十年回顾》
- Jenkins发送邮件,邮件正文嵌套的html中文显示乱码
- Linux执行.sh文件,提示No such file or directory的问题的解决方法