zoukankan      html  css  js  c++  java
  • java线程学习1

    java实现多线程有三种方式:继承Thread类,重写run方法,启动使用start;实现runnable接口,重写run方法;实现callable接口,重写call方法(可以有返回值,也可以抛出异常)


    1.多线程实现文件下载   利用FileUtils.copyURLtoFile()

    package threadStudy;
    
    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    import org.apache.commons.io.FileUtils;
    
    public class WebDownload {
    
        public void download(String url,String dest) {
            try {
                FileUtils.copyURLToFile(new URL(url), new File(dest));
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                System.out.println("url is error!");
            }
        }
    }
    package threadStudy;
    
    public class ThreadDownload extends Thread{
        
        String url;
        String dest;
    
        public ThreadDownload(String url,String dest) {
            this.url = url;
            this.dest = dest;
        }
        
        @Override
        public void run() {
            new WebDownload().download(url, dest);
            System.out.println(dest);
        }
        
        public static void main(String[] args) {
            ThreadDownload t1 = new ThreadDownload("http://pic-bucket.ws.126.net/photo/0001/2019-06-06/EH0TSVI400AP0001NOS.jpg", "linzhiling.jpg");
            ThreadDownload t2 = new ThreadDownload("http://pic-bucket.ws.126.net/photo/0001/2019-06-06/EH0TSVI500AP0001NOS.jpg", "linzhiling2.jpg");
            ThreadDownload t3 = new ThreadDownload("http://pic-bucket.ws.126.net/photo/0001/2019-06-05/EGTO1O6800AN0001NOS.jpg", "rocket.jpg");
            ThreadDownload t4 = new ThreadDownload("http://pic-bucket.ws.126.net/photo/0001/2019-06-05/EGTLGCTO00AN0001NOS.jpg", "rocket2.jpg");
            
            t1.start();
            t2.start();
            t3.start();
            t4.start();
        
        }
    
    }

    模拟抢票(同步问题以后解决)

    package threadStudy;
    
    public class Tickets implements Runnable {
    
        /**
         * 使用runnable 实现线程 有利于共享资源
         */
    
        private int ticketNumber = 100;
    
        @Override
        public void run() {
            while (true) {
                if (ticketNumber <= 0) {
                    break;
                } else {
                    try {
                        Thread.sleep(100);  //模拟线程同步问题
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + "----->" + ticketNumber--);
                }
            }
        }
    
        public static void main(String[] args) {
            Tickets t = new Tickets();
            System.out.println(Thread.currentThread().getName());
            new Thread(t,"黄牛一").start();
            new Thread(t,"黄牛二").start();
            new Thread(t,"黄牛三").start();
        }
    }
  • 相关阅读:
    第03组 Beta冲刺(4/5)
    第03组 Beta冲刺(3/5)
    第03组 Beta冲刺(2/5)
    第03组 Beta冲刺(1/5)
    第03组 Alpha冲刺(6/6)
    第03组 Alpha冲刺(5/6)
    软工实践个人总结
    最终作业
    Beta答辩总结
    Beta 冲刺(7/7)
  • 原文地址:https://www.cnblogs.com/ustc-anmin/p/11001143.html
Copyright © 2011-2022 走看看