zoukankan      html  css  js  c++  java
  • 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();
            }
    
        }
    
    }
  • 相关阅读:
    poj1006生理周期(中国剩余定理)
    Sort the Array
    pojBuy Tickets2828线段树或者树状数组(队列中倒序插队)
    poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)
    将数据转化成字符串时:用字符串的链接 还是 StringBuilder
    poj 2031Building a Space Station(几何判断+Kruskal最小生成树)
    java中同步嵌套引起的死锁事例代码
    poj 1905Expanding Rods
    (单例设计模式中)懒汉式与饿汉式在多线程中的不同
    HDU 1024Max Sum Plus Plus(最大m字段和)
  • 原文地址:https://www.cnblogs.com/simpledev/p/6870155.html
Copyright © 2011-2022 走看看