1、线程 是一个程序里边不同的执行路径(线程是一个程序内部的顺序控制流);
2、进程是一个静态的概念,实际在机器里运行的都是线程;
3、在同一个时间点,CPU只能执行单个线程,轮询执行时间片;
4、线程和进程的区别:
4.1、每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销;
4.2、线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小;
5、多进程:在操作系统中能同时运行多个任务(程序);
6、多线程:在同一应用程序中,有多个顺序流同时执行;
7、java的线程是通过java.lang.Thread类来实现的;
8、VM启动时会有一个由主方法( public static void main( String[] args ){} )所定义的主线程;
9、可以通过创建Thread的实例来创建一个新的线程;
10、每个线程都是通过某个特定的 Thread 对象所对应的方法 run() 来完成其操作的,方法 run() 称为线程体;
11、通过调用Thread 类的 start() 方法来启动一个线程
线程的创建和启动:(两种方式创建新的线程)
1、第一种:
1.1 定义线程类,实现 Runnable 接口;
1.2 Thread newThread = new Thread( target ); // target 为Runnable 接口类型
1.3 Runnable 接口中只有一个方法:
public void run( ); //用来定义线程体
1.4 使用Runnable 接口可以为多个线程提供共享的数据;
1.5 在实现 Runnable 接口类的run方法定义中可以使用Thread 的静态方法;
public static Thread currentThread() 获取当前线程的引用;
2、第二种
2.1 可以定义一个Thread 的子类,并且重写其 run 方法,如:
class MyThread extends Thread {
public void run(){...}
}
然后用 MyThread 定义该类的对象: MyThread myThread = new MyThread( ... );
Tips: 尽量使用实现接口的方式创建线程,这种方式比较灵活,自定义线程类,还可以从别的类继承,还可以实现其他的接口;
阅读(628) | 评论(0) | 转发(0) |