Java 创建多线程

本文详细介绍了Java中多线程的实现方式,包括通过继承Thread类、实现Runnable接口、使用Callable与FutureTask获取线程执行结果等。文章通过具体代码示例展示了如何创建和启动线程,以及获取线程ID和名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、继承java.lang.Thread方式

执行start方法:MyThread的run就会被执行

代码片段:

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
    	MyThread myThread = new MyThread();
    	myThread.start();
    	System.out.println("我的多线程测试!");
    }
}

class MyThread extends Thread{
	public void run(){
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入一条书本书目:");
		String bookName = scanner.next();
		System.out.println(bookName);
	}
}

显示结果:

我的多线程测试!
输入一条书本书目:Java应用教程
Java应用教程

2、获取子线程的id和name

代码片段:

public class Main {
    public static void main(String[] args){
    	MyThread myThread = new MyThread();
    	myThread.start();
    	System.out.println("我的多线程测试!");
    }
}

class MyThread extends Thread{
	public void run(){
		String name = Thread.currentThread().getName();
		long id = Thread.currentThread().getId();
		System.out.println("子线程的name:"+name);
		System.out.println("子线程的id:"+id);
	}
}

显示结果:

我的多线程测试!
子线程的name:Thread-0
子线程的id:8

3、多线程的执行顺序随机(cpu分配)

代码片段:

public class Main {
    public static void main(String[] args){
    	MyThread myThread = new MyThread();
    	MyThread myThread2 = new MyThread();
    	MyThread myThread3 = new MyThread();
    	myThread.start();
    	myThread2.start();
    	myThread3.start();
    	System.out.println("我的多线程测试!");
    }
}

class MyThread extends Thread{
	public void run(){
		String name = Thread.currentThread().getName();
		long id = Thread.currentThread().getId();
		System.out.println("子线程的name:"+name);
		System.out.println("子线程的id:"+id);
	}
}
class MyThread2 extends Thread{
	public void run(){
		String name = Thread.currentThread().getName();
		long id = Thread.currentThread().getId();
		System.out.println("子线程的name:"+name);
		System.out.println("子线程的id:"+id);
	}
}
class MyThread3 extends Thread{
	public void run(){
		String name = Thread.currentThread().getName();
		long id = Thread.currentThread().getId();
		System.out.println("子线程的name:"+name);
		System.out.println("子线程的id:"+id);
	}
}

显示结果:

子线程的name:Thread-2
子线程的id:10
子线程的name:Thread-1
子线程的name:Thread-0
子线程的id:9
子线程的id:8

4、实现java.lang.Runnable接口

代码片段:

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
    	 Runnable runnable = new Runnable() {
			@Override
			public void run() {
				Scanner scanner = new Scanner(System.in);
				System.out.println("输入书名:");
				String bookName = scanner.next();
				System.out.println("书名:"+ bookName);				
			}
		};
		new Thread(runnable).start(); 
		System.out.println("多线程runnable测试");
    }
}

显示结果:

多线程runnable测试
输入书名:Java应用教程
书名:Java应用教程

5、使用Callable+FutureTask获取执行结果创建多线程

task.get()是阻塞式的方法,直到call()返回结果

代码片段:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class Main {
    public static void main(String[] args) throws InterruptedException, ExecutionException{
    	FutureTask<String> task = new FutureTask<>(new Callable<String>() {
			@Override
			public String call() throws Exception {
				return "Java基础教程";
			}   		
		});
    	new Thread(task).start();
    	System.out.println(task.get());
    	System.out.println("Callable+FutureTask获取执行结果创建多线程");
    }
}

显示结果:

Java基础教程
Callable+FutureTask获取执行结果创建多线程

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值