线程
1、
进程:正在运行的程序,负责了这个程序的内存空间分配,代表了内存中的执行区域。
线程:就是在一个进程中负责一个执行路径。
多线程:就是在一个进程中多个执行路径同时执行。
常见的线程方法:
Thread(String name) 初始化线程的名字
getName() 返回线程的名字
setName(String name) 设置线程对象名
sleep() 线程睡眠指定的毫秒数。
getPriority() 返回当前线程对象的优先级 默认线程的优先级是5
setPriority(int newPriority) 设置线程的优先级 虽然设置了线程的优先级,但是具体的实现取决于底层的操作系统的实现(最大的优先级是10 ,最小的1 , 默认是5)。
currentThread() 返回CPU正在执行的线程的对象
package cd.itcast.thread; /** * @date 2016/10/27 * @author ganxingrui * 自定义线程 * 1、继承Thread * 2、重写run()线程中需要执行的代码 * 3、调用start()启动线程,千万不要以普通方式调用run()方法去。 */ public class Demo1 extends Thread{ @Override public void run() { for(int i=0;i<100;i++){ System.out.println("自定义线程:"+i); } } public static void main(String[] args) { Demo1 d=new Demo1(); d.start(); for(int i=0;i<100;i++){ System.out.println("main线程:"+i); } } }
2、
创建线程的第二种方式.使用Runnable接口.
该类中的代码就是对线程要执行的任务的定义.
1:定义了实现Runnable接口
2:重写Runnable接口中的run方法,就是将线程运行的代码放入在run方法中
3:通过Thread类建立线程对象
4:将Runnable接口的子类对象作为实际参数,传递给Thread类构造方法
5:调用Thread类的start方法开启线程,并调用Runable接口子类run方法
为什么要将Runnable接口的子类对象传递给Thread的构造函数,因为自定义的run方法所属对象是Runnable接口的子类对象,所以要让线程去执行指定对象的run方法
package cn.itcast.gz.runnable; public class Demo1 { public static void main(String[] args) { MyRun my = new MyRun(); Thread t1 = new Thread(my); t1.start(); for (int i = 0; i < 200; i++) { System.out.println("main:" + i); } } } class MyRun implements Runnable { public void run() { for (int i = 0; i < 200; i++) { System.err.println("MyRun:" + i); } } }