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();
            }
    
        }
    
    }
  • 相关阅读:
    C++小知识之Vector用法
    云计算和大数据入门
    C++解析JSON之JsonCPP
    OSS研究
    linux内核--进程地址空间(三)
    学习笔记:修改网吧计费系统
    学习笔记:找回电脑开机密码
    例说C#深拷贝与浅拷贝
    JBossESB教程(一)——开发环境的搭建
    Java集合---ConcurrentHashMap原理分析
  • 原文地址:https://www.cnblogs.com/simpledev/p/6870155.html
Copyright © 2011-2022 走看看