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

 


 

posted @ 2015-09-08 23:27  dcz1001  阅读(202)  评论(0编辑  收藏  举报