------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
一 . 线程和进程
进程:一个内存中运行的程序
线程:(1)线程是为了实现多任务,提供效率而出现的一个产物。进程中的一个执行流程,一个进程中可以运行 多个线程。
(2)一个Java应用总是从main()方法开始运行,mian()方法运行在一个线程内,它被称为主线程。线程
总体分两类:用户线程和守候线程。
(3)线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。
当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时候,我们需要引入线程“同步”机
制,即各位线程之间要有个先来后到,不能一窝蜂挤上去抢作一团。
(4)线程同步(synchronize)就是线程排队。同步就是排队。线程同步的目的就是避免线程“同步”执行。
二. Java多线程的实现
实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。
1. 继承Thread类:
public class MyThread extends Thread {
public void run() {
System.out.println("MyThread........");
}
}
2. 实现Runnable接口:
public class MyThread extends OtherClass implements Runnable {
public void run() {
System.out.println("MyThread..........");
}
}
3. 实现有返回结果的多线程:
int taskSize = 5;
// 创建一个线程池
ExecutorService pool = Executors.newFixedThreadPool(taskSize);
// 创建多个有返回值的任务
List<Future> list = new ArrayList<Future>();
for (int i = 0; i < taskSize; i++) {
Callable c = new MyCallable(i + " ");
// 执行任务并获取Future对象
Future f = pool.submit(c);
// System.out.println(">>>" + f.get().toString());
list.add(f);
}
// 关闭线程池
pool.shutdown();