java多线程实例(2)
public class ThreadDemo05 {
public static void main(String args[])
{
// 四个售票点应该控制同一个资源
Demo d = new Demo() ;
Thread t1 = new Thread(d) ;
Thread t2 = new Thread(d) ;
Thread t3 = new Thread(d) ;
Thread t4 = new Thread(d) ;
t1.start() ;
t2.start() ;
t3.start() ;
t4.start() ;
}
}
class Demo implements Runnable
{
private int ticket = 50 ;
Object obj = new Object();//申请一个对象
public void run()
{
while(this.ticket>0)
{
synchronized(obj)
{
if(this.ticket > 0)
{
exe(Thread.currentThread().getName());
}
}
}
}
public void exe(String name){
try {
Thread.sleep(40);
System.out.println( name + " sail --" + ticket--);
System.out.println( name);
System.out.println( name);
} catch (Exception e) {
System.out.println("异常");
}
}
};
java多线程实例(2)的更多相关文章
- Java多线程-实例解析
Java多线程实例 3种实现方法Java中的多线程有三种实现方式:1.继承Thread类,重写run方法.Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯 ...
- java多线程实例
import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.concurr ...
- java多线程实例程序实现与思想
写程序之前要了解两个概念 1.什么是进程 2.什么是线程 搞清楚这两个概念之后 才能写好一个合适而不会太抽象的程序 对进程和线程的理解见链接: https://blog.csdn.net/new_te ...
- JAVA多线程之生产者 消费者模式 妈妈做面包案例
创建四个类 1.面包类 锅里只可以放10个面包 ---装面包的容器2.厨房 kitchen 生产面包 和消费面包 最多生产100个面包3.生产者4消费者5.测试类 多线程经典案例 import ja ...
- Java Tread多线程(0)一个简单的多线程实例
作者 : 卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/39341887 本文演示,一个简单的多线程实例,并简单分析一下线程. 编程多 ...
- JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口
JAVA之旅(十二)--Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口 开始挑战一些难度了,线程和I/O方面的操作了,继续坚持 一. ...
- java多线程(内附实例:窗口售票问题、人和叉子的问题)
java多线程的开发有两种方法: (1)实现Runnable接口: (2)继承Thread类: 区别: (1)由于java中一个类只能继承一个父类,但是可以实现多个接口,所以实现Runnable接口比 ...
- java多线程编程实例
[转]这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下. 1.三个售票窗口同时出售20张票程序分析: ...
- Java 多线程 简单实例 (Runnable)
1.多线程实例 package second; public class A implements Runnable { public char stat = '*'; public void run ...
随机推荐
- win xp 关闭动画屏幕角色,那只小狗
这个动画屏幕角色每次会占用两秒左右的时间. 在搜索选项中打开"改变首选项(G)" -选择 “不使用动画屏幕角色(S)”. - -
- spark api之二:常用示例
1.启动spark shell,在doc窗口上打开spark-shell(环境安装见:二.Spark在Windows下的环境搭建) 并行化scala集合(Parallelize) //加载数据1~10 ...
- Linux下查看某个进程占用的CPU、内存
1.用top命令指定固定的PID top -p 10997 查询指定进程的PID ps -ef | grep zookeeper jim 10997 1959 0 12月14 pts/2 00:00: ...
- CentOS命令行性能检测工具
一.uptime Uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average).load average值分别记录了上个1分钟,5分钟和1 ...
- Java内部类引用外部类中的局部变量为何必须是final问题解析
今天编写一个多线程程序,发现在方法内定义内部类时,如果内部类调用了方法中的变量,那么该变量必须申明为final类型,百思不得其解,后来想到应该是生命周期的原因,因为方法内定义的变量是局部变量,离开该方 ...
- crunch字典生成
密码破解基本有三种方法:第一种是人工猜解(垃圾桶工程和被动信息收集): 第二种是基于字典暴力破解(主流) 在kali里,是默认自带了字典的,分别放在下面三个文件中:/usr/share/wordlis ...
- redis 导出
1 安装redis: apt update apt-get install redis-server 2: cd /etc/redis 3: 用redis-cli导出key redis-cli -h ...
- Dependency Injection in ASP.NET Web API 2 Using Unity
What is Dependency Injection? A dependency is any object that another object requires. For example, ...
- 下载任意版本的Chromium
Download Chromium You can test Chrome builds or Chromium builds. Chrome builds have the most infras ...
- django从请求到响应的过程深入讲解
django启动 我们在启动一个django项目的时候,无论你是在命令行执行还是在pycharm直接点击运行,其实都是执行'runserver'的操作,而ruserver是使用django自带的的we ...