`
limingcai
  • 浏览: 110384 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

多线程理解,线程

阅读更多
   最近在玩安卓,要提到多线程, 总感觉那东西有点不明白,总是有那些停止,暂停,销毁,启动什么的,总是执行那些程序,先后,快慢,说实话,不知道那是什么意思的,
   个人感觉多线程并不是什么情况下都适用的,一般用在定时功能,用得最好的只有播放器,听音乐的这些软件了, 有快进,有慢,有暂停,关闭这些都是多线程的,多线程的意义不在于共同执行一个任务或者是一段代码什么的, 他的意义在于,控制多个线程来完成一个任务,有选择的来完成,
   不知道理解错了没有,也就是自己的理解吧,确实不太明白

贴出多线程例子,看意思代码分析


package com.pu.gc;

public class TestThread{

    public static void main(String[] args) { 
         
        //创建饼的实例 
        Bing b = new Bing(); 
        //创建同步的吃饼和烙饼实例 
        GongNeng g = new GongNeng(b); 
        //创建线程两个消费者两个生产者 
        ChuShi c1 = new ChuShi(g); 
        ChuShi c2 = new ChuShi(g); 
        XiaoFei x1 = new XiaoFei(g); 
        XiaoFei x2 = new XiaoFei(g); 
         
        //启动线程 
        c1.start(); 
        c2.start(); 
        x1.start(); 
        x2.start(); 
    }
}

class ChuShi extends Thread{
   
    private GongNeng g; 
    public ChuShi(GongNeng g){
        this.g = g; 
    } 
     
    public void run(){ 
        for(;;){ 
            g.lao(); 
             
        } 
    } 


class XiaoFei extends Thread{ 
    private GongNeng g; 
    public XiaoFei(GongNeng g){ 
        this.g = g; 
    } 
    public void run(){ 
        for(;;){ 
            g.chi(); 
        } 
    } 


class GongNeng {
    private Bing b; 
    public GongNeng(Bing b){     
        this.b = b;  
    } 
    public synchronized void lao(){ 
        if(b.getBing()<10){ 
            try { 
                Thread.sleep(1500); 
            } catch (InterruptedException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
            } 
            System.out.println(Thread.currentThread()+ 
            ":厨师烙了一张饼,盘里还剩"+(b.getBing()+1)+"张饼"); 
            b.setBing(b.getBing()+1); 
        } 
    } 
     
    public synchronized void chi(){ 
        if(b.getBing()>0){ 
            try { 
                Thread.sleep(2000); 
            } catch (InterruptedException e) { 
                e.printStackTrace(); 
            } 
            System.out.println(Thread.currentThread()+ 
            ":消费者吃了一张饼,盘里还剩"+(b.getBing()-1)+"张饼"); 
            b.setBing(b.getBing()-1); 
        } 
    } 


class Bing { 
    private int bing = 10; 
    public int getBing() { 
        return bing; 
    } 
    public void setBing(int bing) { 
        this.bing = bing; 
    } 
     

分享到:
评论

相关推荐

    IOS多线程理解

    这是一篇介绍IOS多线程理解的文章,简洁易懂,方便阅读

    C#语言多线程初步理解

    通过控件启动,暂停,继续等按钮,操作子线程,在winform控件中输出数据。对于初学者来说可以根据代码很快理解多线程,对多线程的认识

    深入理解Python 多线程

    Python里的多线程是假的多线程,不管有多少核,同一时间只能在一个核中进行操作!利用Python的多线程,只是利用CPU上下文切换的优势,看上去像是并发,其实只是个单线程,所以说他是假的单线程。 那么什么时候用多...

    C#多线程编程实战 源代码

    本书是一本通俗易懂的C#多线程编程指南,通过70多个容易理解的示例,循序渐进地讲解C#5.0中的异步及并发编程,引导读者了解Windows下C#多线程编程的多样性。 通过阅读本书,你将学到: 使用原始线程、异步线程,...

    理解多线程,写一个多线程应用程序,要求能在用户级实现线程的调度,如启动、挂起、恢复、停止,的C thread、java thread实现。

    理解多线程,写一个多线程应用程序,要求能在用户级实现线程的调度,如启动、挂起、恢复、停止,的C thread、java thread实现。

    多线程基础与基于多线程的简单聊天室

    有助于多线程的开发和理解,程序有注释便于理解,可以尝试以此为基础二次开发 学习开发属于自己的聊天室程序,学习多线程的基础。。。

    多线程框架通用多线程源码.zip

    易语言版的多线程通用框架,示范了多线程启动、暂停、恢复、销毁的详细过程,有助于对多线程的理解,运用。

    java多线程通信图解

    一张图方便理解和掌握java 多线程之间通信的实质 java 多线程 其实就是每个线程都拥有自己的内存空间,多线程之间的通信,比例A线程修改了主内存(main方法的线程)变量,需要把A线程修改的结果同步到主线程中,...

    Linux多线程 C语言编程关于多线程

    统中才引入多线程机制,如今,由于自身的许多优点,多线程编程已经得到了广泛的应用。 本文我们将介绍在Linux 下编写多进程和多线程程序的一些初步知识。 1 引言 对于没有接触过 Unix/Linux 操作系统的人来说,fork ...

    多线程thread线程的理解

    很好的多线程例子,学习会很有用的哦,记得来下载喔,谢谢各位!

    易语言多线程许可证的理解使用

    易语言多线程许可证的理解使用源码,多线程许可证的理解使用,公共参数增加,公共参数减少

    基于python的多线程例子,详细介绍了多线程处理

    基于python的多线程例子,详细介绍了多线程处理,便于理解多线程

    多线程操作实例源码,,

    多线程操作实例源码 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指...

    多线程操作实例源码

     多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。...

    简单多线程程序

    这是一个简单的多线程程序 有助于对多线程的理解

    Java多线程详解及示例

    本文将深入探讨Java多线程编程的重要性和使用方法。介绍多线程概念,讨论多线程的优势,并提供实际示例。此外,还将探讨多线程编程中的常见问题以及如何...通过本文,您将获得对Java多线程编程的全面理解和实践经验。

    java 多线程并发实例

    代码里面包含一个并发4个线程同时运行 全部开始 全部停止 单个停止还有点问题。 还有生产者消费者 里面的里面能帮助你理解多线程的运用!

    VC++ 多线程文件读写操作实例

    VC++环境下编写的一个多线程文件读写操作的实例。简单的利用互斥变量、原子操作等技术实现多线程读写文件时的互斥,从而确保文件在操作过程中不会被破坏。...适合刚接触多线程编程的新手学习理解多线程程序的编程思路。

    C#多线程操作技术

    理解线程的概念 理解.NET中线程的属性和方法 创建和使用线程 理解线程的特点、优点及使用场合 在.NET程序设计中,线程是使用Thread类(或Timer类(线程计数器)、ThreadPool类(线程池))来处理的,这些类在System....

Global site tag (gtag.js) - Google Analytics