多线程基础
什么是多线程
生活中一边吃饭一边看电视……
计算机可以一边听歌一边打游戏……但实际上不是同时进行的,而可能是这一毫秒做这件事,下一毫秒做另一件事,宏观上看起来好像是同时在做几件事,但微观上看,在某一时刻是做的一件事。
创建多线程的方法一:继承Thread类,重写run方法,调用start方法开启线程
//创建一个线程,方法一: 继承Thread类,重写run方法,调用start方法开启线程
public class HelloThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println("###############线程"+i);
}
}
public static void main(String[] args) {
HelloThread helloThread = new HelloThread();
//run方法 主线程和其他线程顺序执行
//helloThread.run();
//start方法 主线程和其他线程交替执行
helloThread.start();
for (int i = 0; i < 200; i++) {
System.out.println("主线程"+i);
}
}
}
方法二
//方法二 创建线程
//实现Runnable接口,重写run方法,执行线程需要放入runnable接口的实现类,调用start方法
public class TestRunnable implements Runnable{
@Override
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println("******************线程"+i);
}
}
public static void main(String[] args) {
TestRunnable testRunnable = new TestRunnable();
//Thread thread = new Thread(testRunnable);
//thread.start();
//简写为
new Thread(testRunnable).start();
for (int i = 0; i < 200; i++) {
System.out.println("主线程"+i);
}
}
}
测试多线程——网图下载
需要导入jar包commons-io-2.10.0.jar,可以通过百度下载
创建lib,jar包粘贴到lib下,as library
public class TestThreadDown extends Thread {
private String url;
private String name;
public TestThreadDown(String url, String name) {
this.url = url;
this.name = name;
}
@Override
public void run() {
super.run();
WebDownLoader webDownLoader = new WebDownLoader();
webDownLoader.down(url,name);
System.out.println("下载了"+name);
}
public static void main(String[] args) {
TestThreadDown testThreadDown0 = new TestThreadDown("https://img2.baidu.com/it/u=859882613,1564073189&fm=26&fmt=auto", "1.jpg");
TestThreadDown testThreadDown1 = new TestThreadDown("https://img0.baidu.com/it/u=1305456094,3865830840&fm=26&fmt=auto", "2.jpg");
TestThreadDown testThreadDown2 = new TestThreadDown("https://img2.baidu.com/it/u=199470515,2647632077&fm=26&fmt=auto", "3.jpg");
testThreadDown0.start();
testThreadDown1.start();
testThreadDown2.start();
}
}
class WebDownLoader{
public void down(String url,String fileName){
try {
FileUtils.copyURLToFile(new URL(url),new File(fileName));
} catch (IOException e) {
e.printStackTrace();
System.out.println("下载异常,down方法出现问题");
}
}
}
从结果可以看出,三个图片不是按1、2、3的顺序下载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具