第一篇 多线程(一)

 1 package com.zzp.thread;
 2 /**
 3  *
 4  * 创建线程:方式一
 5  * 1、继承thread类,重写run方法
 6  * 2、启动线程,调用start方法
 7  *
 8  * @author java
 9  *
10  */
11 public class StartThread extends Thread{
12     //重写run()
13     @Override
14     public void run() {
15         for(int i=0;i<10;i++){
16             System.out.println("一边学习");
17         }
18     }
19
20     public static void main(String[] args) {
21         //创建Thread子类对象
22         StartThread st = new StartThread();
23         //启动,并不是立即启动,而是等待cpu调用,至于CPU何时调用,不知道
24         //开启线程的时机很重要
25         st.start();
26         //如果直接调用run()方法,则是普通方法调用,不是开启多线程
27         //st.run();
28
29         for(int i=0;i<10;i++){
30             System.out.println("一边听歌");
31         }
32     }
33 }
 1 package com.zzp.thread;
 2
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.net.MalformedURLException;
 6 import java.net.URL;
 7
 8 import org.apache.commons.io.FileUtils;
 9
10 /**
11  *
12  * 下载工具类
13  * @author java
14  *
15  */
16 public class WebDownLoader {
17     public void downLoader(String url,String name){
18         try {
19             FileUtils.copyURLToFile(new URL(url), new File(name));
20         } catch (MalformedURLException e) {
21             e.printStackTrace();
22         } catch (IOException e) {
23             e.printStackTrace();
24         }
25     }
26 }
 1 package com.zzp.thread;
 2 /**
 3  *
 4  * 创建图片下载的线程
 5  * @author java
 6  *
 7  */
 8 public class TDownLoader extends Thread{
 9     private String url;
10     private String name;
11
12     public TDownLoader(String url, String name) {
13         super();
14         this.url = url;
15         this.name = name;
16     }
17     //重写run()
18     @Override
19     public void run() {
20         WebDownLoader wd = new WebDownLoader();
21         wd.downLoader(url, name);
22     }
23
24     public static void main(String[] args) {
25         TDownLoader td1 = new TDownLoader("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E5%AE%88%E7%A0%B4%E7%A6%BB&step_word=&hs=0&pn=1&spn=0&di=79296871830&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=1435309020%2C3477682663&os=1841078546%2C3614953869&simid=4194686237%2C632091804&adpicid=0&lpn=0&ln=104&fr=&fmq=1536156608183_R&fm=&ic=undefined&s=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Ft2.qpic.cn%2Fmblogpic%2Fee290b3b55e018eb8fac%2F2000&fromurl=ippr_z2C%24qAzdH3FAzdH3Fr_z%26e3Bp_z%26e3Bqq_z%26e3Bv54AzdH3Fs5g2ojtk5AzdH3Frw2j_z%26e3Brir%3Ft1%3Dn8bdcba9acn0cl9%26st1%3D8b989dd8mbcdalmcl8db&gsm=0&rpstart=0&rpnum=0&islist=&querylist=","spl.jpg");
26         TDownLoader td2 = new TDownLoader("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=false&word=%E6%9D%8E%E5%B0%8F%E9%BE%99&step_word=&hs=0&pn=0&spn=0&di=94581897410&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=2752933258%2C795342213&os=1992076552%2C3728441564&simid=3465896125%2C219929152&adpicid=0&lpn=0&ln=3370&fr=&fmq=1536156674237_R&fm=result&ic=0&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=star&bdtype=0&oriquery=&objurl=http%3A%2F%2Fimgcache.cjmx.com%2Fstar%2F201607%2F20160719231717732.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Ffpw6_z%26e3Bv34x_z%26e3Bv54AzdH3Fda8ma0AzdH3F8abdba8_z%26e3Bfip4s&gsm=0&rpstart=0&rpnum=0&islist=&querylist=","lxl.jpg");
27         TDownLoader td3 = new TDownLoader("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E6%B2%B3%E5%8D%97%E7%90%86%E5%B7%A5%E5%A4%A7%E5%AD%A6&step_word=&hs=0&pn=0&spn=0&di=115015699590&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=3620107849%2C3756859208&os=1374852277%2C1275983326&simid=4171483572%2C611783800&adpicid=0&lpn=0&ln=1851&fr=&fmq=1536156735988_R&fm=result&ic=0&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fimg.gaosan.com%2Fupload%2Fwebimg%2F1785.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3B2w5fwg_z%26e3Bv54AzdH3F2w5hw5AzdH3F88d0la_z%26e3Bip4s&gsm=0&rpstart=0&rpnum=0&islist=&querylist=","lgd.jpg");
28
29         td1.start();
30         td2.start();
31         td3.start();
32     }
33
34 }
 1 package com.zzp.thread;
 2 /**
 3  *
 4  * 创建线程:方式二
 5  * 1、实现runnable接口,重写run方法
 6  * 2、启动线程+thread类+调用start方法
 7  * 推荐使用,避免单继承造成的局限性
 8  * @author java
 9  *
10  */
11 public class StartRun implements Runnable{
12     //重写run()
13     @Override
14     public void run() {
15         for(int i=0;i<10;i++){
16             System.out.println("一边学习");
17         }
18     }
19
20     public static void main(String[] args) {
21         //创建Thread子类对象
22         //StartRun sr = new StartRun();
23         //创建Thread类对象
24         //Thread t = new Thread(sr);
25         //启动,并不是立即启动,而是等待cpu调用,至于CPU何时调用,不知道
26         //开启线程的时机很重要
27         //t.start();
28         //如果直接调用run()方法,则是普通方法调用,不是开启多线程
29         //st.run();
30
31         //如果创建的对象只用一次
32         new Thread(new StartRun()).start();
33
34         for(int i=0;i<10;i++){
35             System.out.println("一边听歌");
36         }
37     }
38 }
 1 package com.zzp.thread;
 2 /**
 3  *
 4  * 创建图片下载的线程
 5  * @author java
 6  *
 7  */
 8 public class IDownLoader implements Runnable{
 9     private String url;
10     private String name;
11
12     public IDownLoader(String url, String name) {
13         super();
14         this.url = url;
15         this.name = name;
16     }
17     //重写run()
18     @Override
19     public void run() {
20         WebDownLoader wd = new WebDownLoader();
21         wd.downLoader(url, name);
22     }
23
24     public static void main(String[] args) {
25         IDownLoader td1 = new IDownLoader("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E5%AE%88%E7%A0%B4%E7%A6%BB&step_word=&hs=0&pn=1&spn=0&di=79296871830&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=0&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=undefined&cs=1435309020%2C3477682663&os=1841078546%2C3614953869&simid=4194686237%2C632091804&adpicid=0&lpn=0&ln=104&fr=&fmq=1536156608183_R&fm=&ic=undefined&s=undefined&se=&sme=&tab=0&width=undefined&height=undefined&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Ft2.qpic.cn%2Fmblogpic%2Fee290b3b55e018eb8fac%2F2000&fromurl=ippr_z2C%24qAzdH3FAzdH3Fr_z%26e3Bp_z%26e3Bqq_z%26e3Bv54AzdH3Fs5g2ojtk5AzdH3Frw2j_z%26e3Brir%3Ft1%3Dn8bdcba9acn0cl9%26st1%3D8b989dd8mbcdalmcl8db&gsm=0&rpstart=0&rpnum=0&islist=&querylist=","spl.jpg");
26         IDownLoader td2 = new IDownLoader("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=false&word=%E6%9D%8E%E5%B0%8F%E9%BE%99&step_word=&hs=0&pn=0&spn=0&di=94581897410&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=2752933258%2C795342213&os=1992076552%2C3728441564&simid=3465896125%2C219929152&adpicid=0&lpn=0&ln=3370&fr=&fmq=1536156674237_R&fm=result&ic=0&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=star&bdtype=0&oriquery=&objurl=http%3A%2F%2Fimgcache.cjmx.com%2Fstar%2F201607%2F20160719231717732.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Ffpw6_z%26e3Bv34x_z%26e3Bv54AzdH3Fda8ma0AzdH3F8abdba8_z%26e3Bfip4s&gsm=0&rpstart=0&rpnum=0&islist=&querylist=","lxl.jpg");
27         IDownLoader td3 = new IDownLoader("https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E6%B2%B3%E5%8D%97%E7%90%86%E5%B7%A5%E5%A4%A7%E5%AD%A6&step_word=&hs=0&pn=0&spn=0&di=115015699590&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=3620107849%2C3756859208&os=1374852277%2C1275983326&simid=4171483572%2C611783800&adpicid=0&lpn=0&ln=1851&fr=&fmq=1536156735988_R&fm=result&ic=0&s=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fimg.gaosan.com%2Fupload%2Fwebimg%2F1785.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3B2w5fwg_z%26e3Bv54AzdH3F2w5hw5AzdH3F88d0la_z%26e3Bip4s&gsm=0&rpstart=0&rpnum=0&islist=&querylist=","lgd.jpg");
28
29         new Thread(td1).start();
30         new Thread(td2).start();
31         new Thread(td3).start();
32     }
33
34 }
 1 package com.zzp.thread;
 2 /**
 3  *
 4  * 共享资源,会出现并发问题(后面要确保线程安全)
 5  * @author java
 6  *
 7  */
 8 public class Web12306 implements Runnable{
 9     private int tikectsNum = 99;
10     @Override
11     public void run() {
12         while(true){
13             if(tikectsNum < 0){
14                 break;
15             }
16             //当设置线程延迟的时候,就会出现线程不安全的情况
17             try {
18                 Thread.sleep(200);
19             } catch (InterruptedException e) {
20                 e.printStackTrace();
21             }
22             System.out.println(Thread.currentThread().getName()+"--->"+tikectsNum--);
23         }
24     }
25     public static void main(String[] args) {
26         //一份资源
27         Web12306 wb = new Web12306();
28         //多份代理
29         new Thread(wb,"码农").start();
30         new Thread(wb,"马云").start();
31         new Thread(wb,"麻黄").start();
32     }
33 }
 1 package com.zzp.thread;
 2 /**
 3  *
 4  * 模拟龟兔赛跑
 5  * @author java
 6  *
 7  */
 8 public class Racer implements Runnable{
 9     private static String winner;
10     @Override
11     public void run() {
12         for(int i=1;i<=100;i++){
13             //兔子每走10步,休息一次
14             /*if(Thread.currentThread().getName().equals("兔子") && (i%10 == 0)){
15                 try {
16                     Thread.sleep(200);
17                 } catch (InterruptedException e) {
18                     e.printStackTrace();
19                 }
20             }*/
21             System.out.println(Thread.currentThread().getName()+"-->"+i);
22             boolean flag = gameOver(i);
23             if(flag){
24                 break;
25             }
26         }
27
28     }
29     public boolean gameOver(int i){
30         if(winner != null){
31             return true;
32         }else{
33             if(i==100){
34                 winner = Thread.currentThread().getName();
35                 System.out.println("winner:"+winner);
36                 return true;
37             }
38         }
39         return false;
40     }
41
42     public static void main(String[] args) {
43         Racer rc = new Racer();
44         new Thread(rc,"乌龟").start();
45         new Thread(rc,"兔子").start();
46     }
47 }

原文地址:https://www.cnblogs.com/zhangzhipeng001/p/9594953.html

时间: 2024-08-13 14:07:57

第一篇 多线程(一)的相关文章

秒杀多线程第一篇 多线程笔试面试题汇总 ZZ 【多线程】

http://blog.csdn.net/morewindows/article/details/7392749 系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性.系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”.有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题. ----------------------

秒杀多线程第一篇 多线程笔试面试题汇总

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性.系列中不但会详细讲解多线程同步互斥的各种“招式”,而且会进一步的讲解多线程同步互斥的“内功心法”.有了“招式”和“内功心法”,相信你也能对多线程挥洒自如,在笔试面试中顺利的秒杀多线程试题. -------------------------------------华丽的分割线

宇哥带你飞之Android多线程与异步任务--第一篇

本人工作已经一年多了,具体点说已经一年多3个月了,实习的早,过早的受到了社会的蹂躏.今年6月多份毕业了,然后就到了一个比较大的公司,具体名字就不说了,就是妹子超级超级多....在学校学的是游戏,cx之类的,但是鬼使神差的毕业后跟着同学就干上了应用,多亏了我的第一个老板--李金波,超级感谢~ 好了,废话不多说了,接下来就开启Android多线程与异步任务的学习吧,由于内容有点多,分几篇博客来和大家扯淡~ 学习Android当然就避免不了学习java,java中也有多线程还有线程之间的同步问题等等~

秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文配套程序下载地址为:http://download.csdn.net/detail/morewindows/5136035 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8646902 欢迎关注微博:http://weibo.com/MoreWindows 在<秒杀多线程系列>的前十五篇中介绍多线程的相关概念,多线程同步互斥问题<秒杀多

并行计算复习————第一篇 并行计算硬件平台:并行计算机

并行计算复习 第一篇 并行计算硬件平台:并行计算机 Ch1 并行计算与并行计算机结构模型 1.1多核处理器与线程级并行 1.何谓多核处理器? 将功能复杂的单一核处理器划分为若干个功能相对简单的多个处理器内核,这些多处理器集中在一块芯片上,最初称为单芯片多处理器CMP,Intel公司将其商用名定为多核处理器 2.多核处理器的意义: 解决单处理器瓶颈:密集晶体管集成,功耗剧增:设计指令级并行体系结构来利用晶体管资源,但软件与硬件设计复杂 具有自己的优势:CMP设计验证周期短.开发风险成本低,相对较低

解剖SQLSERVER 第一篇 数据库恢复软件商的黑幕

解剖SQLSERVER 第一篇  数据库恢复软件商的黑幕 这一系列,我们一起来解剖SQLSERVER 在系列的第一篇文章里本人可能会得罪某些人,但是作为一位SQLSERVER MVP,在我的MVP任期内希望可以对大家作出一些贡献 在第一篇里面涉及到某些内容可能不会以详细的方式给出截图并且和大家讲解,毕竟第一篇的篇幅比较长,希望大家见谅.. 在第一篇文章开始之前,先说三个题外话 第一个题外话  更新丢失 首先要做的事情是,跟大家道歉 在之前<SQLSERVER走起>的微信公众帐号里推送了一篇文章

转---秒杀多线程第十二篇 多线程同步内功心法——PV操作上

阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <秒杀多线程第五篇经典线程同步关键段CS> <秒杀多线程第六篇经典线程同步事件Event> <秒杀多线程第七篇经典线程同步互斥量Mutex> <秒杀多线程第八篇经典线程同步信号量Semaphore> <秒杀多线程第九篇经典线程同步总结关键段事件互斥量信号量> <秒杀多线程第十篇生产者消费者问题> <秒杀多线程第十一篇读者写者问题>

TeamTalk初学笔记2---关于win-client【第一篇】

        为了直观的修改TT客户端页面,我花了很多时间在网上寻找UIDesigner设计工具.最后实在是找不到了,就找了同事帮忙,他climb over the wall(这个词都成敏感词汇了?博客里居然不准用)之后终于帮我下载到了. 以下是Duilib的一些网址,很多都需要climb over the wall后才能访问. 官网: www.duilib.com 论坛: bbs.duilib.com qq群: 153787916(1群),79145400(2群),1507570(3群) g

奔跑吧攻城狮 第一篇

入职到现在快两个月了,好不容易才有个空闲的周末,静下心来,理一理大四到到现在所获所得.我也曾经迷茫,曾经困惑,曾经和心爱的人一起看着夕阳西下而不知道明天的路该怎么走.现在,两手放在键盘,心潮澎湃,想写一些感受,担心自己激动得厉害,忘记一些言辞,又加上自己高中时理科出生,本科是学工科,写不出华丽的修饰辞藻,害怕被贻笑大方. 渐行渐远的秋招 ??我的学校是一所西南三线城市的普通本科,坐落于爽爽的贵阳的东郊区.当年以过二本线20多分到30分左右的成绩录取了我们学校,学的是计算机科学与技术专业.去年12