`
limingcai
  • 浏览: 112339 次
  • 性别: 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; 
    } 
     

分享到:
评论

相关推荐

    C#语言多线程初步理解

    本教程将帮助初学者理解C#中的多线程概念,并通过一个Windows Forms应用程序实例,演示如何在WinForm控件中启动、暂停、继续子线程以及输出数据。 首先,我们来看多线程的基本概念。在单线程程序中,所有的任务按...

    多线程测试(是多线程的测试,对学习多线程的朋友有用)

    在编程领域,多线程是一种常见的技术,它允许程序同时执行多个任务,从而提高系统效率和响应速度。...通过深入理解C#的多线程机制,并利用各种测试工具和方法,开发者可以构建出强大且可靠的多线程应用程序。

    易语言多线程传递多参数

    在编程领域,多线程是实现并发执行任务的重要机制,特别是在易语言中,它能有效提升程序的执行效率。...对于易语言的学习者来说,研究这个源码将是一个宝贵的实践机会,可以加深对多线程编程的理解。

    多线程thread线程的理解

    在学习多线程时,我们需要理解以下几个核心概念: 1. **线程的创建**:程序可以通过创建`Thread`对象并调用其`start()`方法来启动一个新线程。在Java中,还可以通过实现`Runnable`接口或继承`Thread`类来创建线程。...

    C#多线程互斥实例 多线程获取同一变量

    首先,我们需要理解多线程中的一些核心概念: 1. **线程**:线程是操作系统分配CPU时间的基本单位,每个线程都有自己的执行路径,它们可以并行或交替执行。 2. **共享资源**:在多线程环境中,多个线程可能需要...

    多线程_按键精灵经典多线程操作_

    理解多线程的基本原理和实践方法,有助于开发者在各种场景下实现更高效的自动化解决方案。 在压缩包文件“多线程.Q”中,很可能包含了一个或多个人工编写的具体多线程按键精灵脚本示例,可能包括线程的创建、线程间...

    鱼刺多线程注册源码例子(鱼刺多线程稳定框架)

    "鱼刺多线程注册源码例子"是一个基于"鱼刺多线程稳定框架"的编程实践,旨在展示如何在软件开发中有效地...通过分析和实践"鱼刺多线程注册源码",不仅可以提高对多线程编程的理解,还能为以后的项目提供宝贵的实践经验。

    pb9多线程控件,能够真实实现多线程

    "有例子"意味着提供了示例代码,帮助用户理解如何使用这个多线程控件。"虽不太完善"暗示这个控件可能存在一些未解决的问题或者未完善的特性,但仍然可以有效地实现多线程操作。"而不是PB本身所实现的共享机制"指的是...

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例),可直接运行

    这些实例不仅覆盖了多线程的基础应用,还涉及到高级的并发控制和同步技术,对于理解和掌握C#.NET中的多线程编程有极大的帮助。通过分析和运行这些实例,开发者可以深入理解多线程在实际项目中的运用,提升解决问题的...

    多线程列子多线程列子多线程列子

    在IT领域,多线程是程序设计中的一个重要概念,尤其在现代计算机系统中,它能够充分利用多核处理器的计算能力,提高程序的执行效率。...理解并掌握多线程编程,能帮助开发者编写出更高效、稳定的软件系统。

    单线程与多线程的区别

    理解这两种模型是编程尤其是服务器端开发的基础,尤其是在Java、C#等支持多线程的编程语言中。 首先,让我们来详细探讨一下**单线程**的概念。在单线程环境中,程序的执行是由一个单一的执行线程控制的,这意味着...

    易语言源码多线程类源码.rar

    易语言是一种专为中国人设计的编程语言,它以简明的中文语法,降低了编程的门槛,使得更多非专业背景的用户也能快速上手编程。...通过研究这些内容,可以深入理解易语言的线程机制,并掌握如何在实践中应用多线程技术。

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

    10. **多线程的调试**:在开发过程中,利用Java的Thread类提供的堆栈信息和Thread Dump,可以帮助我们理解线程的执行状态,定位和解决问题。 通过学习和实践这个项目,你可以深入理解多线程的基本原理,以及如何将...

    C# 多线程实例多线程实例多线程实例

    本文将深入探讨C#中的多线程实例,以帮助开发者理解如何有效地利用多核处理器资源,提高程序的执行效率。 多线程允许一个应用程序同时执行多个任务,每个任务都在一个独立的线程上运行。C#中,我们可以通过System....

    12.1 Qt5多线程:多线程及简单实例

    在编程领域,尤其是在开发高效、响应迅速的应用程序时,多线程技术扮演着至关重要的角色。Qt5框架提供了一种方便的方式来实现多线程,它允许开发者在不同的...正确理解和使用多线程能够提升应用程序的性能和用户体验。

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

    《深入理解易语言版多线程通用框架》 在计算机编程中,多线程是一种并发执行任务的技术,它允许多个任务在同一时间内运行,从而提高了系统资源的利用率和程序的响应速度。尤其在易语言这样的高级编程环境中,多线程...

    Linux下C语言多线程编程实例

    Linux 下 C 语言多线程编程实例 Linux 下的多线程编程是一种非常重要的技术,在...本实例提供了一个非常实用的多线程编程示例,帮助我们更好地理解多线程编程的基本概念和技术,并且可以作为实际应用的参考和借鉴。

    PB多线程实现

    本文将详细探讨PB(包括PB9、PB12.5以及PB.NET)实现多线程的方法。 一、PB9的多线程实现 在PB9中,虽然官方并未直接支持多线程,但开发者可以通过使用Windows API函数来实现。一种常见的方式是创建一个新的窗口类...

    易语言多线程访问网页

    通过学习以上知识点,并结合提供的“多线程访问网页源码”,开发者可以理解并掌握如何在易语言环境下编写多线程网络应用,提高程序的并发性能,提升用户体验。实践过程中,不断调试和优化代码,将有助于深化对易语言...

    .NET多线程实例

    总之,这个.NET 2.0的多线程实例涵盖了多线程的创建与管理、线程同步、UI更新、文件系统操作、异步编程等多个核心知识点,对于理解和实践.NET环境下的并发编程具有很高的价值。通过学习和实践这些示例,开发者可以...

Global site tag (gtag.js) - Google Analytics