一、线程/进程概念
进程:对应于java中的每个工程,在内存中占有独立的内存空间
线程:分为主线程和支线程,主线程指的是程序在执行时main方法的入口,支线程指的是主线程中执行的各条语句
二、线程的创建
线程创建分两种,第一种是继承Thread类,重写类中的run();第二种是现象runnable接口,重写接口中run()。
具体的:
package mypackage
public class MyThread{
t2.start();
}
class Rnner implements Runnable{
public static void run(){
System.out.println("线程一");
}
}
class ThreadT extends Thread{
public static void run(){
System.out.println("线程二");
}
}
三、线程的执行顺序
cpu的执行速度很快,每秒钟几亿次,因此cpu在执行时把时间分成一个个代码片段,随机分配给各个线程,线程随分配的时间片段执行。
四、线程的状态
五、线程中用到的方法:
Thread.isAlive();
Thread.getPriority();
Thread.setPriority();
Thread.join(t2) :将当前Thread线程加入到t2线程中,t2线程暂停执行,Thread执行,Thread执行完毕后,t2继续执行
Tread.sleep(Second):线程睡眠XX秒,如果线程在同步锁内,线程不释放锁
Tread.wait()/Tread.notify()/notifyAll():线程进入等待线程池/唤醒一个/全部线程
Thread.yield():让出cpu,当前线程进入就绪队列等待调度
线程的创建和运行:
package thread;
public class TestThread {
public static void main(String[] args) {
new Thread() {
public void run() {
for(int i=0;i<100;i++) {
System.out.println("线程1");
}
}
}.start();
new Thread(new Runnable() {
public void run() {
for(int i=0;i<100;i++) {
System.out.println("线程2");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<100;i++) {
System.out.println("线程4");
}
}
}
) {
public void run() {
for(int i=0;i<100;i++) {
System.out.println("线程3");
}
}
}.start();
}
}