1、线程:Thread
2、多线程:Multithreaded
3、进程和线程的区别: 进程拥有一套独立变量,线程间数据可共享。
线程共享堆内存,不共享栈内存。共享堆内存带来了线程安全的问题。
进程既不共享堆内存,也不共享栈内存。
4、Thread.sleep方法:静态方法,将当前线程暂停给定的毫秒。这个方法不会创建新线程。该方法抛InterruptedException异常。Interruption(n. 中断;干扰;中断之事)
5、使用线程的意义:使用线程给其他任务提供机会——如果需要执行一个比较耗时的任务就需要使用独立线程。
6、Runnable接口:这个接口必须实现run方法,run方法一般用于放置异步任务(比如耗时代码)。
7、java线程实现的一般步骤:
a、实现Runnable接口,MyRunnable implement Runnable,实现其中的run方法
b、在run方法中放置异步任务
c、由Runnable对象创建Thread对象,Runnable r = new MyRunnable(); Thread t = new Thread(r);
d、启动线程,t.start();
start方法的调用将会立即返回,同时创建新线程异步地运行run方法里的代码。
另外,也可以直接通过继承Thread类的方法来定义一个线程,如下:
class Mythread extends Thread
{
public void run()
{
//task code
}
}
8、线程在中断(Interrupt)被终止,因此,在run方法内部,如果发生InterruptedException时,run方法将结束执行。
9、应该从运行机制上减少并发线程的数量。如果并发任务太多,不建议为每个任务创建一个线程,这样代价太大,这种情况下应优先考虑使用线程池。
10、不能直接调用Thread或者Runnable的run方法,这样只会同步地调用run里面的代码而不是新建一个线程,正确的做法是调用Thread.satrt方法。