特点:
进程是系统运行程序的基本单位;
每一个进程都有自己独立的一块内存空间、一组系统资源;
每一个进程的内部数据和状态都是完全独立的。
线程:是进程执行运算的最小单位,可完成一个独立顺序控制流程。每个进程自少建立一个线程(主线程),来作为这个程序运行的入口点。
java.lang.Thread
创建线程
1.继承Thread类创建线程
public class Mythread extends Thread{...}
//测试类
public class Test{
Mythread thread = new Mythread();
thread.start();
}
2.实现Runnable接口创建线程
public class Myrunnable implements Runnable{...}
//测试类
public class Test{
Myrunnable myrunnable = new Myrunnable();
Thread thread = new Thread(myrunnable);
thread.start();
}
调用start()和run()方法的不同:
start是启动线程,多线程启动,线程交替执行;
run是调用实例,只有主线程执行,程序按顺序执行,属于单线程模式。
线程状态:
创建、就绪、运行、堵塞、死亡。
优先级: setPriority(1-10);1优先级高,10优先级低,默认5;创建时,设立线程优先级,然后在启动;
线程休眠: sleep();毫秒值;
礼让: yield();暂停当前线程,允许其他线程获得运行机会;
强制运行: join() 当前线程暂停执行,等待调用该方法的线程结束后再继续执行本线程。
线程同步:synchronized
同步方法、同步代码块
public class SynObj {
//同步方法
public synchronized void methodA() {
System.out.println("methodA.....");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//同步代码块
public void methodB() {
synchronized(this) {
System.out.pritntln("methodB.....");
}
}
}
同步代码块:其他程序仍可访问该非同步的代码块;