首页 > 代码库 > java多线程的3种写法
java多线程的3种写法
1.Thread
/** * */ package testJava2.thread; /** * @author xxx.sjtu * @function * @date 2017年5月17日 * @version */ public class FirstThreadTest extends Thread { int i = 0; public FirstThreadTest(int i) { super(); this.i = i; } public FirstThreadTest() { super(); // TODO Auto-generated constructor stub } public FirstThreadTest(Runnable target, String name) { super(target, name); // TODO Auto-generated constructor stub } public FirstThreadTest(Runnable target) { super(target); // TODO Auto-generated constructor stub } public FirstThreadTest(String name) { super(name); // TODO Auto-generated constructor stub } public FirstThreadTest(ThreadGroup group, Runnable target, String name, long stackSize) { super(group, target, name, stackSize); // TODO Auto-generated constructor stub } public FirstThreadTest(ThreadGroup group, Runnable target, String name) { super(group, target, name); // TODO Auto-generated constructor stub } public FirstThreadTest(ThreadGroup group, Runnable target) { super(group, target); // TODO Auto-generated constructor stub } public FirstThreadTest(ThreadGroup group, String name) { super(group, name); // TODO Auto-generated constructor stub } // 重写run方法,run方法的方法体就是现场执行体 public void run() { //当前线程: this System.out.println(this.getName() + " " + i); } public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); new FirstThreadTest(888).start(); } }
2.Runnable
/** * */ package testJava2.thread; /** * @author xxx.sjtu * @function * @date 2017年5月17日 * @version */ public class RunnableThreadTest implements Runnable { private int i; public RunnableThreadTest() { super(); // TODO Auto-generated constructor stub } public RunnableThreadTest(int i) { super(); this.i = i; } @Override public void run() { //当前线程: Thread.currentThread() System.out.println(Thread.currentThread().getName() + " " + i); } public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); RunnableThreadTest rtt = new RunnableThreadTest(999); new Thread(rtt, "新线程1").start(); } }
3.Callable
/** * */ package testJava2.thread; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; /** * @author xxx.sjtu * @function * @date 2017年5月17日 * @version */ public class CallableThreadTest implements Callable<Integer> { @Override public Integer call() throws Exception { int i = 2017; System.out.println(Thread.currentThread().getName() + " " + i); return i; } public static void main(String[] args) { CallableThreadTest ctt = new CallableThreadTest(); FutureTask<Integer> ft = new FutureTask<>(ctt); new Thread(ft, "有返回值的线程").start(); try { System.out.println("子线程的返回值:" + ft.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } }
java多线程的3种写法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。