• 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();
            }
    
        }
    
    }
  • 相关阅读:
    客户端和Web Api服务的交互
    ASP.NET MVC4 validate验证遇到DateTime 类型的Bug(完整解决方案)
    不能说的秘密 一个很感人的爱情故事
    快五一了,申请了第一个Blog,哈哈。
    人生没有目标是可怕的。。。
    在.NET中使用SMTP发送邮件,有一些疑问
    smtp验证发邮件,今天好郁闷,终于解决了
    C#、.NET迷你音乐播放器(改进版)
    C#实现冒泡排序 堆栈 队列
    C#、.NET版邮件(群)发系统
  • 原文地址:https://www.cnblogs.com/simpledev/p/6870155.html
Copyright © 2020-2023  润新知