多线程的学习1

多线程

线程是操作系统能够进入运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。

进程:是程序的基本执行实体。

并发:在同一个时刻,有多个指令在单个CPU上交替执行。

并行:在同一时刻,有多个指令在多个CPU上同时执行。

多线程的实现方式

1.继承Thread类的方式进行实现

package MyThread;public class MyThread extends Thread{@Overridepublic void run(){for (int i = 0; i < 100; i++) {System.out.println(getName()+"helloworld");}}
}
package MyThread;public class ThreadDemo {public static void main(String[] args) {
MyThread t1=new MyThread();MyThread t2=new MyThread();t1.setName("线程1");t2.setName("线程2");
t1.start();
t2.start();}
}

2.实现Runnable接口的方式进行实现

package MyThread.a02ThreadDemo02;public class MyRun implements Runnable{@Overridepublic void run() {Thread t = Thread.currentThread();for (int i = 0; i < 100; i++) {System.out.println(t.getName()+"Helloworld");}}
}
package MyThread.a02ThreadDemo02;public class ThreadDemo {public static void main(String[] args) {MyRun mr=new MyRun();Thread t1=new Thread(mr);Thread t2=new Thread(mr);t1.setName("线程1");t2.setName("线程2");t1.start();t2.start();}
}

3.利用Callable接口和Future接口方式实现

package MyThread.a03ThreadDemo03;import java.util.concurrent.Callable;public class MyCallable implements Callable<Integer> {@Overridepublic Integer call() throws Exception {int sum=0;for (int i = 0; i < 100; i++) {sum=sum+i;}return sum;}
}
package MyThread.a03ThreadDemo03;import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;public class ThreadDemo {public static void main(String[] args) throws ExecutionException, InterruptedException {MyCallable mc=new MyCallable();FutureTask<Integer> ft=new FutureTask<>(mc);Thread t1=new Thread();t1.start();Integer result = ft.get();System.out.println(result);}
}

常见的成员方法

package MyThread.a04ThreadDemo;public class MyThread extends Thread{public MyThread() {}
public MyThread(String name){super(name);
}@Overridepublic void run(){for (int i = 0; i < 100; i++) {System.out.println(getName()+"@"+i);}}
}
package MyThread.a04ThreadDemo;public class ThreadDemo {public static void main(String[] args) {//getName//1.如果我们没有给线程设置名字,线程也是有默认的名字的//格式:Thread-x(x序号,从0开始的)//2.如果我们要给线程设置名字,可以用set方法进行设置,也可以用构造方法//当jvm虚拟机启动之后,会自动的启动多条线程,其中有一条线程就叫main线程//它的作用就是调用main方法,并执行里面的代码/* MyThread t1=new MyThread();MyThread t2=new MyThread();MyThread t3=new MyThread("karry");MyThread t4=new MyThread("roy");t1.start();t2.start();*///哪条线程执行到这个方法,此时获取的就是哪条线程的对象
Thread t=new Thread();String name = t.getName();System.out.println(name);}
}

线程的优先级

package MyThread.a05threadDEMO;public class MyRun implements Runnable{@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println(Thread.currentThread().getName()+i);}}
}
package MyThread.a05threadDEMO;public class ThreadDemo {public static void main(String[] args) {MyRun mr=new MyRun();Thread t1=new Thread(mr,"karry");Thread t2=new Thread(mr,"roy");System.out.println(t1.getPriority());System.out.println(t2.getPriority());t1.setPriority(1);t2.setPriority(10);t1.start();t2.start();}
}

守护线程

package MyThread.a06threaddemo;public class MyThread1 extends  Thread{@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println(getName()+"@"+i);}}
}
package MyThread.a06threaddemo;public class MyThread2 extends Thread{@Overridepublic void run() {for (int i = 0; i < 100; i++) {System.out.println(getName()+"@"+i);}}
}package MyThread.a06threaddemo;import MyThread.a04ThreadDemo.MyThread;public class ThreadDemo {public static void main(String[] args) {MyThread1 t1=new MyThread1();MyThread2 t2=new MyThread2();t1.setName("karry");t2.setName("roy");t2.setDaemon(true);t1.start();t2.start();}
}

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

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

相关文章

排序---数组和集合

1、数组排序 Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序&#xff0c;并且是按照从小到大的排序。 public static void main(String[] args) {Integer []arr {1,2,3,4,5,6};//升序Arrays.sort(arr);for (int x:arr){System.out.print(x " ");}Sys…

Redis桌面客户端

3.4.Redis桌面客户端 安装完成Redis&#xff0c;我们就可以操作Redis&#xff0c;实现数据的CRUD了。这需要用到Redis客户端&#xff0c;包括&#xff1a; 命令行客户端图形化桌面客户端编程客户端 3.4.1.Redis命令行客户端 Redis安装完成后就自带了命令行客户端&#xff1…

20232831 2023-2024-2 《网络攻防实践》第4次作业

目录 20232831 2023-2024-2 《网络攻防实践》第4次作业1.实验内容2.实验过程&#xff08;1&#xff09;ARP缓存欺骗攻击&#xff08;2&#xff09;ICMP重定向攻击&#xff08;3&#xff09;SYN Flood攻击&#xff08;4&#xff09;TCP RST攻击&#xff08;5&#xff09;TCP会话…

字节算法岗二面,凉凉。。。

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

linux + gitee+idea整套配置以及问题详解

目录&#xff1a; 1、安装git 2、git配置 3、git和gitee账户建立安全链接 4、gitee创建仓库 5、idea配置gitee 6、克隆提交代码 1、安装git 使用到github上下载最新版&#xff0c;上传到你的服务器&#xff0c;再进行解压。 这里是我的压缩包。解压命令&#xff1a; cd /usr/g…

Window11系统下,VMware安装Ubuntu 18.04虚拟机

本文主要记录Window11系统&#xff0c;VMware安装Ubuntu 18.04虚拟机&#xff0c;主要包括常见的镜像网站下载、硬盘分区、创建虚拟机和Ubuntu系统安装四部分。 &#x1f3a1;导航小助手&#x1f3a1; 1. Ubuntu镜像下载2.磁盘分区3.创建Ubuntu虚拟机4.Ubuntu系统安装 1. Ubun…

colmap 【Feature matching】特征匹配参数解释

&#xff08;Windows&#xff09;Colmap 具体使用教程可参考我的这篇博文 下面只是matching参数解释 Matching这个阶段很重要&#xff0c;匹配方式不同会对最终结果影响很大&#xff0c;要根据实际情况选择合适的匹配方式。下面是各个参数的详细解释。 1.Exhaustive——官方文…

SQL96 返回顾客名称和相关订单号(表的普通联结、内联结inner join..on..)

方法一&#xff1a;普通联结 select cust_name, order_num from Customers C,Orders O where C.cust_id O.cust_id order by cust_name,order_num;方法二&#xff1a;使用内连接 select cust_name,order_num from Customers C inner join Orders O on C.cust_id O.cust_id …

书生浦语训练营2期-第一节课笔记

笔记总结: 了解大模型的发展方向、本质、以及新一代数据清洗过滤技术、从模型到应用的典型流程、获取数据集的网站、不同微调方式的使用场景和训练数据是什么&#xff0c;以及预训练和微调在训练优势、通信/计算调度、显存管理上的区别。 收获&#xff1a; 理清了预训练和微调…

DICE模型教程

原文练级&#xff1a;DICE模型教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247599474&idx6&snbd716d5719ddd8bd6c565daa0f361b72&chksmfa820495cdf58d83360a402cb2a05042e0f13e6d84d96ee36708e4c5ce90fa124ad9a30b9717&token1105644014&…

系统分析师-软件开发模型总结

前言 软件工程模型也称软件开发模型。它是指软件开发全部过程、活动和任务的结构框架&#xff0c;通过该模型能清晰、直观地表达软件开发全过程&#xff0c;明确地规定要完成的主要活动和任务&#xff0c;它奠定了软件项目工作的基础 一、瀑布模型&#xff08;Waterfall Model…

王道C语言督学营OJ课后习题(课时14)

#include <stdio.h> #include <stdlib.h>typedef char BiElemType; typedef struct BiTNode{BiElemType c;//c 就是书籍上的 datastruct BiTNode *lchild;struct BiTNode *rchild; }BiTNode,*BiTree;//tag 结构体是辅助队列使用的 typedef struct tag{BiTree p;//树…

安卓国内ip代理app,畅游网络

随着移动互联网的普及和快速发展&#xff0c;安卓手机已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;由于地理位置、网络限制或其他因素&#xff0c;我们有时需要改变或隐藏自己的IP地址。这时&#xff0c;安卓国内IP代理App便成为了一个重要的工具。虎观代理…

Android TargetSdkVersion 30 安装失败 resources.arsc 需要对齐且不压缩。

公司项目&#xff0c;之前targetSDKVersion一直是29&#xff0c;近期小米平台上架强制要求升到30&#xff0c;但是这个版本在android12上安装失败&#xff0c;我用adb命令安装&#xff0c;报错如下图 adb: failed to install c: Program Files (x86)(0A_knight\MorkSpace \Home…

Jmeter性能综合实战——签到及批量签到

提取性能测试的三个方面&#xff1a;核心、高频、基础功能 签 到 请 求 步 骤 1、准备工作&#xff1a; 签到线程组 n HTTP请求默认值 n HTTP cookie 管理器 n 首页访问请求 n 登录请求 n 查看结果树 n 调试取样器 l HTTP代理服务器 &#xff08;1&#xff09;创建线…

Python基础:标准库 -- pprint (数据美化输出)

1. pprint 库 官方文档 pprint --- 数据美化输出 — Python 3.12.2 文档 pprint — Data pretty printer — Python 3.12.2 documentation 2. 背景 处理JSON文件或复杂的嵌套数据时&#xff0c;使用普通的 print() 函数可能不足以有效地探索数据或调试应用程序。下面通过一…

C#自定义最大化、最小化和关闭按钮

目录 1.资源文件 2.读取资源文件中的图片 3.WindowState属性 4. 示例 用户在制作应用程序时&#xff0c;为了使用户界面更加美观&#xff0c;一般都自己设计窗体的外观&#xff0c;以及窗体的最大化、最小化和关闭按钮。本例通过资源文件来存储窗体的外观&#xff0c;以及最…

计算机网络常见题(持续更新中~)

1 描述一下HTTP和HTTPS的区别 2 Cookie和Session有什么区别 3 如果没有Cookie,Session还能进行身份验证吗&#xff1f; 4 BOI,NIO,AIO分别是什么 5 Netty的线程模型是怎么样的 6 Netty是什么&#xff1f;和Tomcat有什么区别&#xff0c;特点是什么&#xff1f; 7 TCP的三次…

Ipython与Jupyter之间的关系

IPython 和 Jupyter 之间的关系可以从它们的历史和目标中得到很好的解释。IPython&#xff08;Interactive Python&#xff09;最初是由 Fernando Prez 于 2001 年创建的&#xff0c;旨在提升 Python 的交互式计算体验。它提供了一个强大的交互式 Python shell 和一个面向高效计…

android studio忽略文件

右键文件&#xff0c;然后忽略&#xff0c;就不会出现在commit里面了 然后提交忽略文件即可