java多线程

xiaoxiao2021-02-28  31

//1.//1.创建Runnable接口实现多线程

public class Main { static int[] next = new int[1000001]; public static void main(String[] args) { // TODO Auto-generated method stub Runnable_test r1 = new Runnable_test("Thread-1"); r1.start(); Runnable_test r2 = new Runnable_test("Thread-2"); r2.start(); } } class Runnable_test implements Runnable { Thread t; String str; public Runnable_test(String str) { this.str = str; System.out.println("Creating " + this.str); } @Override public void run() { // TODO Auto-generated method stub System.out.println("Running " + str); for(int i = 0;i<4;i++) { System.out.println("Thread: " + str+" "+i); try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block //e.printStackTrace(); System.out.println("Thread :"+str+" interrupted"); } } System.out.println("Thread: "+str+" exiting"); } public void start() { System.out.println("Starting "+str); if(t == null) { t = new Thread(this, str); t.start(); } } } //2.继承thread实现多线程

public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Thread_test t1 = new Thread_test("Thread-1"); t1.start(); Thread_test t2 = new Thread_test("Thread-2"); t2.start(); } } class Thread_test extends Thread { Thread t; String str; Thread_test(String str) { this.str = str; System.out.println("Creating " + this.str); } public void run() { System.out.println("Running "+str); for(int i = 0;i<4;i++) { System.out.println("Thread: "+str+" "+i); try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block //e.printStackTrace(); System.out.println("Thread :"+str+" interrupted"); } } System.out.println("Thread: "+str+" exiting"); } public void start() { System.out.println("Starting "+str); if(t == null) { t = new Thread(this, str); t.start(); } } } //3.通过Callable和Future创建进程

import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class CallableThread implements Callable<Integer>{ public static void main(String[] args) { // TODO Auto-generated method stub CallableThread ct = new CallableThread(); FutureTask<Integer> ft = new FutureTask<>(ct); for(int i = 0;i<100;i++) { System.out.println(Thread.currentThread().getName()+" "+i); if(i == 20) { new Thread(ft, "returned thread").start(); } } try { System.out.println("son's thrread returned value: "+ft.get()); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public Integer call() throws Exception { // TODO Auto-generated method stub //return null; int i = 0; for(;i<100;i++) { System.out.println(Thread.currentThread().getName()+" "+i); } return i; } }

转载请注明原文地址: https://www.6miu.com/read-2624638.html

最新回复(0)