多任务处理 :计算机可以执行多段程序,程序共享单个CPU,操作系统将在运行的程序之间切换,由于切换时间很短,看上去像是同时处理了多任务。
多线程:在一个程序内部可以有多个线程并行执行,一个线程的执行可以看作是一个CPU在执行该程序,所以当一个程序在多线程处理过程中,好像有多个CPU在同时执行该程序。
在现代的计算机中,多核CPU的出现,使得一个线程可以被一个CPU执行,这才是真正意义上的并行执行。
因为出现了问题,当一个线程读内存,另一个线程写入内存时,会出现的不同结果就是我们要考虑的问题。
查看Thread源码,其中写到:
There are two ways to create a new thread of execution.
有两种方法可以创建一个新的执行线程。
One is to declare a class to be a subclass of Thread. This subclass should override the run method of class Thread. An instance of the subclass can then be allocated and started.
一种方法是将类声明为线程的子类。这个子类应该重写类Thread的run方法。然后可以分配并启动子类的一个实例。
example:
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
}
}
PrimeThread p = new PrimeThread(143);
p.start();
The other way to create a thread is to declare a class that implements the Runnable interface. That class then implements the run method. An instance of the class can then be allocated, passed as an argument when creating Thread, and started.
另一种创建线程的方法是声明实现Runnable接口的类。然后该类实现run方法。然后可以分配类的实例,在创建线程时作为参数传递,并启动。
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
}
}
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
参考文档:http://ifeve.com/java-concurrency-thread-directory/