三种线程的创建方式学习

线程名称设置,创建
  1. 方法1;通过继承Thread创建线程
package com.Thread;
public class ThreadDemo01 {
public static void main(String[] args) {
Thread.currentThread().setName("修主线程");
//对子线程进行启动
TreadDemo02 thread = new TreadDemo02("构造器传字符串参修改线程名字");//这里不能用子类进行调用方法,调用的话就当作普通方法执行了
thread.start();
//main的主线程
for(int i =1;i<=10;i++)
{
System.out.println(Thread.currentThread().getName()+i);
}
}
}
//开辟子线程工作区域
class TreadDemo02 extends Thread {
public TreadDemo02(String name){
super(name);
}
public void run() {
for(int i =1;i<=10;i++){
System.out.println(this.getName()+i);
}
}
}
  1. 方法2,通过实现接口Runnable来创建线程

    (Runnable接口在Thread类中实现;由于一个类只能有一个父类;java的单继承;多实现特点;选择用接口Runnable;更加灵活;高效)

    package com.Thread;
    //线程体
    public class Demo003 implements Runnable{
    int ticketnum = 10;
    public void run() {
    //有100人在抢票
    for(int i = 1;i<=100;i++){
    if(ticketnum>0){
    System.out.println("我抢到了火车票;第"+ticketnum--+"张;从"+Thread.currentThread().getName()+"窗口");
    }
    }
    }
    }
    package com.Thread;
    public class Demo002 {
    public static void main(String[] args) {
    Demo003 demo003 = new Demo003();
    //Runnable方法调用线程;共享资源的能力也会强一些,不需要非得加个static来修饰
    //这里的名字需要从获取主线程进行获取Thread.currentThread().getName();默认为main
    //操控体
    Thread t1 = new Thread(demo003,"1号");
    t1.start();
    Thread t2 = new Thread(demo003,"2号");
    t2.start();
    Thread t3 = new Thread(demo003,"3号");
    t3.start();
    }
    }
    1. 方法3,Callable接口实现了线程体可以有返回值;可以有异常的述求;弥补了上述的不但是在实现线程启动时必须调用futureTask作为中间键进行嵌套本身类对象demo004和thread的连接启动
package com.Thread;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class Demo004 implements Callable {
@Override
public Object call() throws Exception {
Random random = new Random();
int i = random.nextInt(5);
return i;
}
}
class Demo005{
public static void main(String[] args) throws Exception {
Demo004 demo004 = new Demo004();
FutureTask futureTask = new FutureTask(demo004);
Thread thread = new Thread(futureTask);
thread.start();
//这里通过futureTask调用返回值进行接收
Object o = futureTask.get();
System.out.println(o);
}
}
posted @   爱豆技术部  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
TOP
点击右上角即可分享
微信分享提示