进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发
性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺
度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共
享内存,从而极大地提高了程序的运行效率。相对进程而言,线程是一个更加接近于执行体的概念,它可
以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入
线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。
创建线程的几种方式:
1、继承Thread
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();
--------------------------------------------------------------------------------
2、创建线程的另一种方法是声明实现 Runnable 接口的类。
该类然后实现 run 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。
采用这种风格的同一个例子如下所示:
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();
--------------------------------------------------------------------------------
3、利用Executors来创建线程
Executors.newSingleThreadExecutor().execute(
new Runnable(){
@Override
public void run() {
System.out.println("+++++++++++++++++++++++++++++");
}
}
) ;
/*每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。
*/