目录
线程:
定义:进程可以同时执行多个任务,每个任务就是线程。举个例子:一个Java程序,如果同时有两个循环同时进行,就是线程。 再比如,你用百度网盘,边看视频,边下载。
继承Thread类:
步骤写在代码里的
class mythread extends Thread
{
@Override//2.重写run方法,将线程任务代码写在run方法里
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println("线程进行了"+i+"次");
}
}
}
class Test
{
public static void main(String[] args) {
//3.创建线程对象
mythread m1=new mythread();
//4.调用start方法开启线程
m1.start();
}
}
实现Runnable类:
//1.编写一个类实现Runnable接口
class myrunable implements Runnable {
@Override//2.重写run方法,将线程任务代码写在run方法里
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println("线程进行了" + i + "次");
}
}
}
class Test1
{
public static void main(String[] args) {
//3.创建线程任务资源
myrunable m1=new myrunable();
//4.创建线程对象,将资源传入
Thread t1= new Thread(new myrunable());
//5.使用线程对象调用start方法开启线程
}
}
实现Callable接口:
此方法可以有返回值
//1.编写一个类实现Callable接口,注意可以接收泛型
class mycallabel implements Callable<Integer>
{
@Override//2.重写call方法,将线程任务代码写在call方法
public Integer call() throws Exception {
int sum=0;
for (int i = 0; i < 200; i++) {
sum+=i;
System.out.println("线程进行了" + i + "次");
}
return sum;
}
}
class Test2
{
public static void main(String[] args) {
//3.创建线程任务资源对象
mycallabel m1=new mycallabel();
//4.创建线程任务对象,封装线程资源
FutureTask<Integer> f1=new FutureTask<>(m1);
//5.创建线程对象,传入线程任务对象
Thread t1=new Thread(f1);
//6.使用线程对象调用start方法
t1.start();
}
}
验证多线程:
验证多线程,最简单的方法,我们拿第三种举例子。
我们在最后加上一个循环。
然后就会发现这连个循环在交替打印,说明他们就是多线程
标签:run,Thread,实现,接口,class,线程,new,多线程,public From: https://blog.csdn.net/zgwnb666/article/details/139248588