zoukankan      html  css  js  c++  java
  • Java创建线程的三种方式

    1.继承Runnable接口

    package test;
    class RunnableDemo implements Runnable{
        private Thread t;
        private String threadName;
        
        RunnableDemo(String name){
            threadName=name;
            System.out.println("Creating "+name);
        }
        public void run(){
            System.out.println("Running "+threadName);
            try{
                for(int i=4;i>0;i--){
                    System.out.println("Thread: "+threadName+" "+i);
                    Thread.sleep(50);
                }
            }
            catch(InterruptedException e){
                System.out.println("Thread "+threadName+" Excepted");
            }
            System.out.println("Thread "+threadName+" Exiting");
        }
        public void start(){
            System.out.println("Starting "+threadName);
            if(t==null){
                t=new Thread(this,threadName);
                t.start();
            }
        }
    }
    public class HelloWorld {
        public static void main(String []args) {
            RunnableDemo R1=new RunnableDemo("thread1");
            R1.start();
            RunnableDemo R2=new RunnableDemo("thread2");
            R2.start();
        }
    }

    2.继承Thread类

    package test;
    class ThreadDemo extends Thread{
        private Thread t;
        private String threadName;
        
        ThreadDemo(String name){
            threadName=name;
            System.out.println("Creating "+name);
        }
        public void run(){
            System.out.println("Running "+threadName);
            try{
                for(int i=4;i>0;i--){
                    System.out.println("Thread: "+threadName+" "+i);
                    Thread.sleep(50);
                }
            }
            catch(InterruptedException e){
                System.out.println("Thread "+threadName+" Excepted");
            }
            System.out.println("Thread "+threadName+" Exiting");
        }
        public void start(){
            System.out.println("Starting "+threadName);
            if(t==null){
                t=new Thread(this,threadName);
                t.start();
            }
        }
    }
    public class HelloWorld2 {
        public static void main(String []args) {
            ThreadDemo T1=new ThreadDemo("thread1");
            T1.start();
            ThreadDemo T2=new ThreadDemo("thread2");
            T2.start();
        }
    }

    3.通过 Callable 和 Future 创建线程

  • 相关阅读:
    为什么new的普通数组用delete 和 delete[]都能正确释放
    虚幻4属性系统(反射)
    CFileDialog类的默认路径
    把单一元素的数组放在一个struct的尾端
    在UE4中使用SVN作为source control工具
    单精度浮点数和有效位数为什么是7位
    Valid Number--LeetCode
    归并排序
    堆排序
    直接选择排序
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/6358222.html
Copyright © 2011-2022 走看看