一、线程与进程:
1.线程:程序中单独顺序的控制流
线程本身依靠程序进行运行
线程是程序中的顺序控制流,只能使用分配给程序的资源和环境
2.进程:执行中的程序
一个进程可以包含一个或多个线程
一个进程至少要包含一个线程
3.单线程:
程序中至少要存在一个主线程,实际上主方法就是一个主线程。
4.多线程:
多线程是在一个程序中运行多个任务
多线程的目的是更好的使用CPU资源
二、线程的实现
1.在Java中,线程的实现有两种:继承Thread类,实现Runable接口
2.Thread类:
Thread类是在java.lang包中定义的,继承Thread类必须重写run()方法
定义格式:
class className extends Thread{ run(){}; }
3.Runable接口
具体代码操作:
第一种实现方式:继承Tread类
package com.yeqc.thread; public class MyThread extends Thread{ private String name; public MyThread(String name) { this.name = name; } @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(name+":"+i); } super.run(); } } package com.yeqc.thread; public class ThreadDemo01 { public static void main(String[] args) { MyThread t1 = new MyThread("A"); MyThread t2 = new MyThread("B"); // t1.run(); // t2.run(); //线程的启动是通过start() t1.start(); t2.start(); } }
运行结果:
B:0 A:0 B:1 A:1 B:2 A:2 B:3 B:4 B:5 B:6 A:3 A:4 A:5 B:7 A:6 B:8 A:7 B:9 A:8 A:9
第二种实现方式:实现Runable接口
package com.yeqc.thread; public class MyRunable implements Runnable{ private String name; public MyRunable(String name) { this.name = name; } @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(name+":"+i); } } } package com.yeqc.thread; public class ThreadDemo01 { public static void main(String[] args) { MyRunable r1 = new MyRunable("A"); MyRunable r2 = new MyRunable("B"); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); } }
运行结果:
B:0 A:0 B:1 A:1 B:2 B:3 A:2 B:4 B:5 A:3 B:6 A:4 B:7 A:5 B:8 A:6 B:9 A:7 A:8 A:9
时间: 2024-12-14 00:19:50