线程(Thread)
1.线程是CPU进行资源调度的最小单位
2.线程是进程实际运行的单位,处理进程中无数的小任务
3.线程共享代码和数据空间
4.一个进程可以并发多个线程,线程之间切换系统开销很小
5.在一个进程中至少有一个主线程
6.除了主线程之外,都可以被叫做子线程
7.子线程之间如果没有限制,所有子线程都是并行
8.线程之间如果没有资源冲突,就各自执行,互不相关。
线程的创建:继承形式
新建线程类,继承于线程Thread:
package com.lan;
public class MyThread extends Thread {
@Override //重写父类Thread的run方法
public void run() {
//在重写的run方法中,写要在线程中执行的代码
System.out.println("当前线程是:"+Thread.currentThread().getName());
for (int i = 0; i <10 ; i++) {
System.out.println("thread1-"+i);
try {
Thread.sleep(200); //延时200ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.lan;
public class MainClass {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.setName("thread1:");
myThread.start(); //启动线程
}
} 线程创建:接口形式
新建任务类,实现线程接口:Runnable
package com.lan;
public class MyTask implements Runnable{
@Override
public void run() {
System.out.println("当前线程是"+Thread.currentThread().getName());
for (int i = 0; i <10 ; i++) {
System.out.println(Thread.currentThread().getName()+i);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package com.lan;
public class MainClass {
public static void main(String[] args) {
Thread t2 =new Thread(new MyTask(),"t2:"); //创建线程类对象T2
t2.start(); //启动线程
System.out.println("当前线程是:"+Thread.currentThread().getName()); //获取当前main线程,main本身是一个主线程
}
}