1.进程
一个正在运行的程序(独立运行的程序)
一个程序里可以只有1个线程(单线程)
一个程序也可以有多个线程(多线程)
2.线程
一个线程相当于一个cup的执行路径,一个独立的运行单元
例题1:
public class Demo{
public static void main(String[]args){
add();
remove();
System.out.println("程序执行完毕");
}
public static void add() {
for (int i = 0; i < 100; i++) {
System.out.println(i);
}
}
public static void remove() {
System.out.println("删除");
}
}
例题2:主线程开启线程的步骤
JVM调用main方法---》找到操作系统(cup)--》开启一个执行路径
public class Demo02 {
public static void main(String[] args) {
System.out.println(10/0);
add();
System.out.println("程序完成");
}
public static void add() {
for (int i = 0; i < 100; i++) {
System.out.println(i);
}
}
}
例题3:创建一个子线程,并开启
创建方法一:
1.继承Thread
2.重写父类中的run方法
注:线程默认名字:Thread - 0,Thread - 1.....
public class Demo{
public static void main(String [] args){
SubThread subThread = new SubThread("线程");
subThread.start();
}
}
class SubThread extends Thread{
public SubThread(){
}
public SubThread(String name){
super(name);
public void run(){
for(int i= 0;i<50;i++){
System.out.println(Thread.currentThread().getName()+"--run方法--"+i);
}
}
}
例题4:Threa中的set/get
public class Demo04 {
public static void main(String[] args) {
NameThread nameThread = new NameThread("线程1","myname");
nameThread.start();
}
}
class NameThread extends Thread{
private String name;
public NameThread() {
}
public NameThread(String name,String myName) {
super(name);
this.name = myName;
}
public String getMyName() {
return name;
}
public void setMyName(String name) {
this.name = name;
}
public void run() {
for (int i = 0; i <50; i++) {
System.out.println(Thread.currentThread().getName()+"--"+i);
}
}
}
例题5:线程创建方法2
通过接口来实现创建线程对象
public class Demo{
public static void main(String [] args){
RunnableImpl rImpl = new RunnableImpl();
Thread thread = new Thread(rImpl);
thread.setName("线程1");
thread.start();
}
}
class RunnableImpl implements Runnable{
public void run(){
for(int i= 0;i<10;i++){
System.out.println(Thread.currentThread().getName()+"--"+i);
}
}
}
结果:
线程1--0
线程1--1
线程1--2
线程1--3
线程1--4
线程1--5
线程1--6
线程1--7
线程1--8
线程1--9