Java学习--线程(一)
目录
一、进程与线程
进程:运行的程序和它所需要的资源(CPU、内存)
线程:线程是进程的一部分,粒度比进程小,一个进程可以拥有多个线程,至少包含一个线程,这个线程就是主线程。
线程与进程的区别:
ps:
使用多线程的目的:
最大效率的使用
ps:真正的多线程是建立在多核
二、线程的实现方式
返回值获取方法
ps:推荐使用第二种
注:
三、线程的生命周期
创建:实例化一个线程对象
就绪:
运行:获得
阻塞:暂停
结束:
线程的名称
一下是线程的简单实现代码:
package com.demo.thread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
/**
* @author Administrator
*
*/
/**
* @author Administrator
*
*/
public class ThreadExample {
/**
* @param args
*/
public static void main(String[] args) {
ThreadExample1 threadExample1 = new ThreadExample1();
threadExample1.start();
FutureTask<String> futureTask = new FutureTask<>(new ThreadExample3());
try {
String s = futureTask.get();
System.out.println(Thread.currentThread().getName()+"--------"+s);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
/**
* @author Administrator
*
*/
class ThreadExample1 extends Thread{
@Override
public void run() {
super.run();
for(int i = 0;i<10;i++){
System.out.println(Thread.currentThread().getName()+"--------"+i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* @author Administrator
*
*/
class ThreadExample2 implements Runnable {
@Override
public void run() {
for(int j=0;j<10;j++){
System.out.println(Thread.currentThread().getName()+"--------"+j);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
/**
* @author Administrator
*
*/
class ThreadExample3 implements Callable<String>{
@Override
public String call() throws Exception {
}
}
线程的优先级
默认的优先级是
以下是

package com.demo.thread; public class JoinDemo { public static void main(String[] args) { JoinThread thread = new JoinThread(); thread.start(); System.out.println("over"); } } class JoinThread extends Thread{ @Override public void run() { super.run(); for(int i =0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"------"+i); } } }

package com.demo.thread; public class JoinDemo { public static void main(String[] args) throws InterruptedException { JoinThread t = new JoinThread(); t.start(); t.join(); System.out.println("over"); } } class JoinThread extends Thread{ @Override public void run() { super.run(); for(int i =0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"------"+i); } } }
1)
2)
3)
4)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!