zoukankan      html  css  js  c++  java
  • Java多线程实现

        在Java中实现多线程有2种方法:

    1.继承Thread

    public class ThreadDemo extends Thread {
        String name;
        private  int count = 100;
    
        // 使用Thread类的有参数的构造函数
        ThreadDemo(String name) {
            this.name = name;
        }
    
        public void run() {
            // compute primes larger than minPrime
            for (int i = 0; i < 100; i++) {
                    calcCount();
                    System.out.println("线程开始:" + this.name + ",i=" + i + ",count="
                            + count);
            }
            // System.out.println(name);
        }
    
        private synchronized void calcCount() {
            if (count > 0) {
                count--;
            }
        }
    
        public static void main(String[] args) {
            ThreadDemo td = new ThreadDemo("1");
            ThreadDemo td2 = new ThreadDemo("2");
            ThreadDemo td3 = new ThreadDemo("3");
            td.start();
            td2.start();
            td3.start();
        }
    }

    2.实现Runnable接口

    public class RunnableDemo implements Runnable{
        String name;
    
        RunnableDemo(String name) { 
            this.name=name;
     }    
        
        @Override
        public void run() {
            // TODO Auto-generated method stub
             for(int i=0;i<100;i++){  
                 System.out.println("线程开始:"+this.name+",i="+i);  
                 }  
        }
        
        public static void main(String[] args){
            RunnableDemo rd=new RunnableDemo("1");
            RunnableDemo rd2=new RunnableDemo("2");
            RunnableDemo rd3=new RunnableDemo("3");
            new Thread(rd,"ww").start();
            new Thread(rd2).start();
            new Thread(rd3).start();
        }
    
    }

     这两种方式都可以正常完成多线程的处理,网上讲述:一般情况下使用多线程是用业务类实现Runnable接口。

    看下Thread的定义:

    public class Thread implements Runnable{...}

    我们就知道Thread其实就是Java里面对Runnable的官方实现,如果我们不需要特别的控制的话,直接用Thread就可以了。

    情况有点类似List的实现,我们在Java中用ArrayList就可以了,当然你也可以自定义一个List的实现类出来。。。。

    资源同步

    使用多线程就不得不提到线程同步,为了访问有限资源,对资源上锁是一件必须的操作步骤。当然上锁也是一件耗费系统资源的事情,需要在开发时做一些取舍。

    常用上锁方法有 synchronized 、lock,可以简单认为是自动化和手工处理的差别。

    对同步讲的较多的是:http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html

  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/malaya/p/4384354.html
Copyright © 2011-2022 走看看