第二十章:多线程

进程

线程的特点

1.进程是资源分配的最小单位,线程是最小的执行单位

2.一个进程可以有多个线程

3.线程共享进程资源 

package twentyth;
 
 
public class ThreadTest extends Thread {
    public void run() {
        for (int i = 1; i <= 10; i++) {//继承重写方法
            System.out.print(i + " ");
        }
    }
 
    public static void main(String[] args) {
        ThreadTest t = new ThreadTest();
        t.start();
    }
}
//例题20.1

线程的实现

package twentyth;
 
import java.awt.Container;
import javax.swing.*;
 
public class SwingAndThread extends JFrame {
    int count = 0; // 图标横坐标
 
    public SwingAndThread() {
        setBounds(300, 200, 250, 100); // 绝对定位窗体大小与位置
        Container container = getContentPane();// 主容器
        container.setLayout(null); // 使窗体不使用任何布局管理器
 
        Icon icon = new ImageIcon("src/1.gif"); // 图标对象
        JLabel jl = new JLabel(icon);// 显示图标的标签
        jl.setBounds(10, 10, 200, 50); // 设置标签的位置与大小
        Thread t = new Thread() { // 定义匿名线程对象
            public void run() {
                while (true) {
                    jl.setBounds(count, 10, 200, 50); // 将标签的横坐标用变量表示
                    try {
                        Thread.sleep(500); // 使线程休眠500毫秒
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    count += 4; // 使横坐标每次增加4
                    if (count >= 200) {
                        // 当图标到达标签的最右边时,使其回到标签最左边
                        count = 10;
                    }
                }
            }
        };
        t.start(); // 启动线程
        container.add(jl); // 将标签添加到容器中
        setVisible(true); // 使窗体可见
        // 设置窗体的关闭方式
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
 
    public static void main(String[] args) {
        new SwingAndThread(); // 实例化一个SwingAndThread对象
    }
}

package twentyth;
 
 
import java.awt.*;
import java.util.Random;
import javax.swing.*;
 
public class SleepMethodTest extends JFrame {
    private static Color[] color = { Color.BLACK, Color.BLUE, Color.CYAN, Color.GREEN, Color.ORANGE, Color.YELLOW,
            Color.RED, Color.PINK, Color.LIGHT_GRAY }; // 定义颜色数组
    private static final Random rand = new Random(); // 创建随机对象
 
    private static Color getC() { // 获取随机颜色值的方法
        return color[rand.nextInt(color.length)];
    }
 
    public SleepMethodTest() {
        Thread t = new Thread(new Runnable() { // 创建匿名线程对象
            int x = 30; // 定义初始坐标
            int y = 50;
 
            public void run() { 
                while (true) { // 无限循环
                    try {
                        Thread.sleep(100); // 线程休眠0.1秒
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Graphics graphics = getGraphics(); // 获取组件绘图上下文对象
                    graphics.setColor(getC()); // 设置绘图颜色
                    graphics.drawLine(x, y, 100, y++); // 绘制直线并递增垂直坐标
                    if (y >= 80) {
                        y = 50;
                    }
                }
            }
        });
        t.start(); // 启动线程
    }
 
    public static void main(String[] args) {
        init(new SleepMethodTest(), 100, 100);
    }
 
    public static void init(JFrame frame, int width, int height) { // 初始化程序界面的方法
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(width, height);
        frame.setVisible(true);
    }
}
//20.3


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/160469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity开发之C#基础-File文件读取

前言 今天我们将要讲解到c#中 对于文件的读写是怎样的 那么没接触过特别系统编程小伙伴们应该会有一个疑问 这跟文件有什么关系呢&#xff1f; 我们这样来理解 首先 大家对电脑或多或少都应该有不少的了解吧 那么我们这些软件 都是通过变成一个一个文件保存在电脑中 我们才可以…

Spring Boot创建和使用(重要)

Spring的诞生是为了简化Java程序开发的&#xff01; Spring Boot的诞生是为了简化Spring程序开发的&#xff01; Spring Boot就是Spring框架的脚手架&#xff0c;为了快速开发Spring框架而诞生的&#xff01;&#xff01; Spring Boot的优点&#xff1a; 快速集成框架&#x…

2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年G2电站锅炉司炉证考试题库及G2电站锅炉司炉试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲…

MySQL 事务的底层原理和 MVCC(一)

在事务的实现机制上&#xff0c;MySQL 采用的是 WAL&#xff08;Write-ahead logging&#xff0c;预写式日志&#xff09;机制来实现的。 在使用 WAL 的系统中&#xff0c;所有的修改都先被写入到日志中&#xff0c;然后再被应用到系统中。通常包含 redo 和 undo 两部分信息。 …

【Java开发】 Springboot集成Mybatis-Flex

1 Mybatis-Flex 介绍 1.1简介 Mybatis-Flex 是一个优雅的 Mybatis 增强框架&#xff0c;它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用 Mybaits-Flex 链接任何数据库&#xff0c;其内置的 QueryWrapper 亮点帮助我们极大的减少了 SQL 编写的工作的同时&#xff…

cocos2dx ​​Animate3D(二)

Twirl 扭曲旋转特效 // 持续时间(时间过后不会回到原来的样子) // 整个屏幕被分成几行几列 // 扭曲中心位置 // 扭曲的数量 // 振幅 static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude)…

基于springboot实现摄影跟拍预定管理系统【项目源码+论文说明】计算机毕业设计

基于springboot实现摄影跟拍预定管理系统演示 摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要…

【2018年数据结构真题】

方法一 给定一个含n(n>1)个整数的数组&#xff0c;请设计一个在时间上尽可能高效的算法&#xff0c;找出数组中未出现的最小正整数。例如&#xff0c;数组{-5&#xff0c;3&#xff0c;2&#xff0c;3}中未出现的最小正整数是1&#xff1b;数组{1&#xff0c;2&#xff0c;…

AIGC变革BI行业,永洪发布vividime全球化品牌

大数据产业创新服务媒体 ——聚焦数据 改变商业 国内BI商业智能市场&#xff0c;一直有着“内永洪&#xff0c;外Tableau”的说法。成立于2012年的永洪科技经过十多年的发展&#xff0c;早已崛起为国内大数据行业的一支劲旅。 ChatGPT火爆出圈之后&#xff0c;AIGC快速渗透&am…

【C++】vector的介绍与使用

&#x1f9d1;‍&#x1f393;个人主页&#xff1a;简 料 &#x1f3c6;所属专栏&#xff1a;C &#x1f3c6;个人社区&#xff1a;越努力越幸运社区 &#x1f3c6;简 介&#xff1a;简料简料&#xff0c;简单有料~在校大学生一枚&#xff0c;专注C/C/GO的干货分…

【Java 进阶篇】Redis 数据结构:轻松驾驭多样性

引言 Redis是一款强大的键值对存储系统&#xff0c;其数据结构的多样性是其引以为傲的特点之一。在这篇博客中&#xff0c;我们将深入探讨Redis的主要数据结构&#xff0c;包括字符串、哈希表、列表、集合和有序集合&#xff0c;并通过实例代码演示它们的用法。 1. 字符串&am…

在中国企业出海的大浪潮下,亚马逊云科技提供遍及全球的基础设施和技术支持

中国技术出海是中国企业更高层次更高质量的全球化。在人类文明发展史上&#xff0c;凝聚中国古人智慧结晶的造纸术、印刷术、火药、指南针等&#xff0c;曾为中国技术出海写下过浓墨重彩的一笔。在今天&#xff0c;如金山办公、店匠科技、ADVANCE.AI等公司又以技术立业&#xf…

msvcp140.dll是什么?msvcp140.dll丢失的有哪些解决方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的msvcp140.dll文件。本文将详细介绍5个解决msvcp140.dl…

Day27|Leetcode 39. 组合总和 Leetcode 40. 组合总和 II Leetcode131. 分割回文串

Leetcode 39. 组合总和 题目链接 39 组合总和 本题目和前面的组合问题差不多&#xff0c;只不过这里能重复选取数字&#xff0c;还是要注意组合的定义&#xff0c;交换数字顺序还是算一个组合&#xff0c;所以这里还是用我们的startIndex来记录取的数字到哪里了&#xff0c;下…

阿里云发送短信

官方代码如下&#xff1a; // This file is auto-generated, dont edit it. Thanks. package com.aliyun.sample;import com.aliyun.tea.*;public class Sample {/*** 使用AK&SK初始化账号Client* param accessKeyId* param accessKeySecret* return Client* throws Excep…

【电子通识】USB3.0和USB2.0有什么区别?

版本 USB2.0是2000年4月27日由USB-IF组织提出了USB2.0总线协议规范。 USB3.0是2008年11月17日由USB-IF组织提出了超高速USB3.0规范。 图标对比 USB2.0的标志就是和USB1.1的标志基本上没啥区别&#xff0c;还是以前的那个样子&#xff0c;使用黑色颜色用标识 USB3.0它有一个S…

计算机毕业设计 基于微信小程序的“共享书角”图书借还管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

pycurl>=7.43.0.5机器学习环境配置问题

去官网下载对应版本.whl文件&#xff0c;注意使用python --version提前查看 python版本信息和64bit还是32bit,下载对应版本。 cd 到该路径下&#xff0c;并pip。6

opengl制作天空盒

首先创建顶点数组 unsigned int m_uiVaoBufferID; glGenVertexArrays(1, &m_uiVaoBufferID); 然后创建顶点缓冲区 float skyboxVertices[] {// positions-1.0f, 1.0f, -1.0f,-1.0f, -1.0f, -1.0f,1.0f, -1.0f, -1.0f,1.0f, -1.0f, -1.0f,1.0f, 1.0f, -1.0f,-1.0f, 1.…

使用gin 代理 web网页

问web项目的代理&#xff0c;业界常用的方案是nginx做代理&#xff0c;这个是网上最多资料的。 因为我需要做自己的流量转发&#xff0c;也就是所有访问都要经过我的一个流量分发微服务&#xff0c;这和nginx作用冲突了。如果再加个nginx来做第一层方向代理和网页的静态资源代…