java多线程的使用
线程的创建和使用
package test; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; /** * @author 作者 E-mail: * @version 创建时间:2021年3月10日 上午9:22:50 * 类说明 */ //线程的使用 public class Test001 { public static void main(String[] args) { //1.继承Thread类 MyThread myThread = new MyThread(); myThread.start(); //2.实现Runnable接口 Thread thread = new Thread(new MyRunnable()); thread.start(); //3.实现Callable接口 FutureTask futureTask = new FutureTask(new Xxx()); Thread ad = new Thread(futureTask); ad.start(); try { Object object = futureTask.get(); System.out.println(object); } catch (InterruptedException | ExecutionException e) { e.printStackTrace(); } //4.线程池的使用 /* * newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool:创建一个定长线程池,支持定时及周期性任务执行。 newSingleThreadExecutor:创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行 */ ExecutorService cachedThreadPool = Executors.newFixedThreadPool(3); cachedThreadPool.execute(thread); } } //第一种继承Thread类 class MyThread extends Thread{ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("MyThread"); } } } //第二种实现Runnable接口 class MyRunnable implements Runnable{ @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("MyRunnable"); } } } //第三种实现Callable接口 class Xxx implements Callable{ @Override public Object call() throws Exception { for (int i = 0; i < 100; i++) { System.out.println("Xxx"); } return "good"; } }

浙公网安备 33010602011771号