Java 学习————多线程同步

public class Tongywo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Shangdian0 sd=new Shangdian0(100);
		Goumai0 no1=new Goumai0(70, sd, "No.1");
		Goumai0 no2=new Goumai0(80, sd, "No.2");

		no1.start();
		no2.start();
	}

}

class Shangdian0{

	int kucun=0;

	public Shangdian0(int kucun){

		this.kucun=kucun;
	}

	public synchronized void goumai(int i){

		if(i<kucun){

			kucun-=i;
			System.out.println(Thread.currentThread().getName()+"购买"+i+"本");
			System.out.println("商店剩余"+kucun+"本");
		}
		else{

			System.out.println("库存量不够");
		}
	}
}

class Goumai0 extends Thread{

	int i;
	Shangdian0 sd;

	public Goumai0(int i, Shangdian0 sd, String name){

		this.i=i;
		this.sd=sd;
		this.setName(name);
	}

	public void run(){

		sd.goumai(i);
	}
}

时间: 2024-12-29 11:57:12

Java 学习————多线程同步的相关文章

Java之多线程同步基础

java学习的道路上呢总有一些麻烦的东西需要花费一些时间去理解,比如个人认为不好搞的多线程. 线程是并列运行的 因为是并列运行,所以有时候会发生资源抢占,从而导致参数变化; 比如酱紫 package seer.线程; public class SumArray { private int sum; //在这个地方sumArry()没有被同步 没有加sync... public int sumArray(int[] sums) { sum = 0; //重置 初始化sum for (int i =

【53】java的多线程同步剖析

synchronized关键字介绍: synchronized锁定的是对象,这个很重要 例子: class Sync { public synchronized void test() { System.out.println("test开始.."); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("test结束..&

Java学习---多线程的学习

基础知识 每个正在系统上运行的程序都是一个进程(process).每个进程包含一到多个线程(thread).进程也可能是整个程序或者是部分程序的动态执行. 线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行.也可以把它理解为代码运行的上下文.所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务. Java对多线程的支持是非常强大的,他屏蔽掉了许多的技术细节,让我们可以轻松的开发多线程的应用程序.Java里面有2个方法实现多线程, 1 继承 Thread类,比如 class M

[Java学习]多线程(207待续)

关于多进程与多线程 使用多进程的目的:提高CPU利用率. 使用多线程的目的:提高应用程序?利用率. 多线程与多进程区别:进程间内存独立:同一个进程的线程间共享"堆内存和方法区内存",栈内存是独立的,一个线程一个栈. JVM原理 Java命令启动JVM虚拟机,等于启动了一个进程,该进程会自动启动一个主线程,然后主线程去调用某个类的main方法,所以main方法执行在主线程中. 单线程中,一个方法调用另一个方法,则这些方法按序压入栈中,此时JVM中只有一个栈. Java中多线程 publi

Java 复习 —— 多线程同步

1.问题引出 在多线程环境中,可能有多个线程同时访问一个有限的资源(资源共享),为了避免资源访问.操作混乱,所以出现了锁的机制!合理控制资源的操作(读与写)权限. 2.了解几个概念 1)获取CPU资源:线程想要执行必须得到CPU资源,这是一个必要条件!然而资源的调度是操作系统根据线程的优先级.线程资源的使用等因素来确定的.不需要深究,只要知道线程想要运行必须要获取到CPU资源,这是一个门槛.我们总是纠结Thread 的 sleep.yield.start 之后到底什么时候运行,其实就是CPU资源

JAVA学习---多线程

1.线程概述 2.线程实现(2种方式) 2.1通过Thread子类实现(Run方法.Start方法) //继承Thread的方法开启多线程 public class Demo11_1 extends Thread{ public void run() { //线程运行的程序内容 for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } pub

java学习——多线程

本文内容来源于  历经5年锤练--史上最适合初学者入门的Java基础视频 线程:就是进程中一个负责程序执行的控制单元(执行路径) 每一个线程都有自己运行的内容.这个内容可以称为线程要执行的任务. 多线程好处:解决了多部分同时运行的问题. 多线程的弊端:线程太多回到效率的降低. JVM启动时就启动了多个线程,至少有两个线程可以分析的出来. 1,执行main函数的线程, 该线程的任务代码都定义在main函数中. 2,负责垃圾回收的线程. 如何创建一个线程呢? 创建线程方式一:继承Thread类. 步

[Java][Android] 多线程同步-主线程等待全部子线程完毕案例

有时候我们会遇到这种问题:做一个大的事情能够被分解为做一系列相似的小的事情,而小的事情无非就是參数上有可能不同样而已! 此时,假设不使用线程,我们势必会浪费许多的时间来完毕整个大的事情.而使用线程的话将会存在这种问题: 主线程启动全部子线程并发运行后主线程就直接返回了,导致外部函数判读整个大的事情完毕了,可是实际上并没有完毕! 针对以上情况我想我会採用多线程方式运行同一时候解决主线程等待子线程的问题.如图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ

【java】多线程同步生产者消费者问题

1 package 多线程; 2 class Producer implements Runnable{ 3 private Data data; 4 public Producer(Data data){ 5 this.data=data; 6 } 7 @Override 8 public synchronized void run() { 9 for(int i=0;i<50;i++){ 10 if(i%2==0){ 11 this.data.setTitle("饼干");