Java之多线程
程序员文章站
2022-03-09 09:28:42
...
1.什么是多线程?
线程其实就是程序执行的一条路径 一个进程可以包含多个线程
多线程是并发进行的
底层 其实还是单线程(cpu运行效率极其高 )
并发:两个任务同时请求运行 而处理器只能执行一个 不过由于处理的特别快感觉是两个任务同时运行
并行:就是两个任务一起同步运行(需要多核cpu)
2.java程序运行原理
jvm是多线程的 有两个线程: 垃圾回收线程 主函数main是个线程
3.Thread类
继承Thread
重写run 方法
调用start方法
public class Main{
public static void main(String args[]) throws Exception{
MyThread mt = new MyThread();
mt.start();
for(int i=1;i<=1000;i++) {
System.out.println("主线程代码");
}
}
}
class MyThread extends Thread{
public void run()
{
for(int i=1;i<=1000;i++) {
System.out.println("我的线程代码");
}
}
}
4.实现Runnable
实现Runnable接口
重写run方法
因为要启动线程必须通过Thread类的start方法才能使用!
所以必须要创建Thread的对象 把Runable作为target参数传递给Thread
public class Main{
public static void main(String args[]) {
demo de = new demo();
new Thread(de).start(); //1.第一种启动线程的方法 匿名对象
Thread t = new Thread(de); //2.第二种启动线程的方法
t.start();
Runnable run = de; //3.第三种启动线程的方法 父类引用指向子类对象
new Thread(run).start();
for(int i=1;i<=1000;i++) {
System.out.println("主线程代码");
}
}
}
class demo implements Runnable
{
@Override
public void run() {
for(int i=1;i<=1000;i++) {
System.out.println("我的线程代码");
}
}
}
Runnable能够实现多线程的原理 (源码分析)
通过作为Thread类的构造参数 传入底层的init方法 最后给Runnable 类型的target赋值 然后去调用run方法
两者的区别:
1.继承 代码比较简单 不过有父类的话就不用了
2.实现 代码比较复杂 可以多实现
个人而言喜欢使用Runnable接口 扩展性比较强
当然具体情况具体分析
6.用匿名内部类实现多线程
public class Main{
public static void main(String args[]) {
new Thread() {
public void run()
{
for(int i=1;i<=1000;i++) {
System.out.println("线程1111111111代码");
}
}
}.start();
new Thread(new Runnable() {
public void run()
{
for(int i=1;i<=1000;i++) {
System.out.println("线程33333333333代码");
}
}
}).start();
}
}
上一篇: 如何正确使用uniGUI的HyperServer(负载均衡)功能
下一篇: PHP实现异步的三种方式