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

  • 相关阅读:
    简单图表分析(2/2)
    简单图表分析(1/2)
    juqery dragsort使用遇到的问题
    移动端实战总结
    CSS VS JS动画,哪个更快[译]
    HTML5移动端图片上传模块
    移动端使用rem适配及相关问题
    再谈vertical-align与line-height
    Javascript中的Promise
    Retina屏实现1px边框
  • 原文地址:https://www.cnblogs.com/malaya/p/4384354.html
Copyright © 2011-2022 走看看