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();
            }
    
        }
    
    }
  • 相关阅读:
    libevent-2.0.so.5 (安装MEMCACHED问题)
    MySQL的show语句大全
    远程客户端连接MysqL数据库太慢解决方案
    用SQL命令查看Mysql数据库大小
    elasticsearch-head安装及启动
    logstash收集IIS日志
    备份并删除7天以前数据
    shell脚本递归压缩实践
    二目运算符 “->”
    关于int main( int argc, char *argv[] )
  • 原文地址:https://www.cnblogs.com/simpledev/p/6870155.html
Copyright © 2011-2022 走看看