简单的JAVA多线程程序

梦里梦外; 2022-12-15 14:24 262阅读 0赞

简单的多线程

一、部分基础内容

1、线程的对应包为:

java.lang.Thread; //Thread的T需要区分大小写
//直接使用eclipse可以不需要进行import
//直接使用终端进行运行则必须import

2、线程的运行方式

线程对象调用start()函数,多个对象同时进行调用开始运行
station1.start();//让每一个站台对象各自开始工作
station2.start();
station3.start();

3、重写线程的原调用函数run()

run()函数为线程运行时使用的函数
public void run(){
//运行的代码段
}
注意在run()函数中设置线程结束条件

4、对线程进行“催眠”,使得其它线程可以运行

sleep(1000); //1000的单位是毫秒

5、设置密钥,加锁

//创建一个静态钥匙,值可以是任意的
static Object key = “ “;
//对最先进入运行的线程进行加锁,其它线程进入等待状态
//所以该锁应该出现在循环运行中
synchronized(key)

  1. 为什么需要进行加锁:
  2. 对于多线程来说,CPU的资源是各个线程都可以使用的,如果不对其进行加锁,任意
  3. 线程都可以随时对其资源(变量等)进行修改,不能够保证线程内执行代码的原子操
  4. 作,导致程序出现混乱。(eg:原1+1=2,最后得到非2的数。)

二、完整代码如下:

  1. /**
  2. * 多线程购票
  3. * @author cyq_cookies
  4. * @date 2020-06-03
  5. */
  6. class Station1 extends Thread{ //通过构造方法给线程名字赋值
  7. public Station1(String name){
  8. super(name);//给线程名字赋值
  9. }
  10. //static int tick = 20; //因为票数要保持一致,所以票数要静态
  11. static Object key = "cyq";//创建一个静态钥匙,值是任意的
  12. public void run(){ //重写run方法
  13. while(tick>0){
  14. synchronized(key){
  15. if(tick>0){
  16. System.out.println(getName()+":售卖第"+(21-tick)+"张票!");
  17. tick--;
  18. }
  19. else{
  20. System.out.println("票已全部售卖完!");
  21. }
  22. }
  23. try{
  24. sleep(1000);
  25. }catch(InterruptedException e){
  26. e.printStackTrace();
  27. }
  28. if(tick==0)
  29. System.out.println(getName()+"查询:无票可买!");
  30. }//while
  31. }
  32. }
  33. public class saleTicket {
  34. public static void main(String[] args) {
  35. //实例化站台对象 并为每一个站台取名字
  36. Station1 station1 = new Station1("窗口1");
  37. Station1 station2 = new Station1("窗口2");
  38. Station1 station3 = new Station1("窗口3");
  39. station1.start();//让每一个站台对象各自开始工作
  40. station2.start();
  41. station3.start();
  42. }
  43. }

三、运行结果

在这里插入图片描述
在这里插入图片描述
两次运行,仅第一次进行买票,1、2、3窗口分别按次序进行,其它为随机顺序进入。

发表评论

表情:
评论列表 (有 0 条评论,262人围观)

还没有评论,来说两句吧...

相关阅读

    相关 线程序

    功能描述:相机采集图片,同时对采集的图片进行处理 功能说明:采集和处理两个模块采用线程处理,数据使用循环队列进行存储。 主程序 encoding: utf-

    相关 Java线程序设计

    一、理解多线程   多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。   线程又称为轻量级进程,它和进程一样拥有独立

    相关 Java线简单实例

    最近为了提高批处理程序的统计效率,将程序改为多线程执行,由原来的单一线程计算改为五个线程同时计算,大大缩短了统计时间。实现原理很简单,就是将需要计算的内容分成五份交给五个线程进

    相关 java 线简单介绍

    多线程概述 进程:正在运行的程序 线程:程序的执行单元,一条执行路径。 多线程就是一个进程中有多个执行路径。 多线程的实现方式1 1)创建类继承Thread类