多线程

news/2024/7/3 16:43:47

世界上本没有多线程,cpu故意在各个线程中跳转,就假装有了多线程

测试的时候语句少的一下被执行完,要增加多点语句才能测试出来恰恰说明了这个原理

线程的实现由两种方法

1)继承Thread,然后重写run方法,(不能漏掉public

class SpackA extends Thread{
SpackA a=new SpackA();

2)运用Thread(Runnable target),run方法改在Runnable接口里面实现

class SpackA implements Runnable{
Thread a=new Thread(new SpackA());

线程有优先级,默认是5,既是Thread.NORM_PRIORITY,最大Thread.MIN_PRIORITY,最小Thread.MAX_PRIORITY

setPriority()//在try语句中执行
getPriority()

 


 

一些知识

sleep(int millsecond)要在try-catch块中进行

isAlive()可以检测线程是否生存,(run方法开始运行到结束就是生存的)

类方法currentThread()返回当前调用的线程

线程不要重新赋值,因为旧的线程不会被垃圾回收机制回收,还会继续发挥作用

interrupt()可以重新激活sleep的程序,在sleep的try-catch块里面会发出异常

import java.io.*;
import java.util.Scanner;
import java.sql.*;public class Test {public static void main(String args[]){demo demo1=new demo();demo1.student=new Thread(demo1);demo1.teacher=new Thread(demo1);demo1.student.start();demo1.teacher.start();}
}class demo implements Runnable{Thread student,teacher;@Overridepublic void run() {// TODO 自动生成的方法存根if(Thread.currentThread()==student){System.out.println("sleep");try {student.sleep(10000);} catch (InterruptedException e) {// TODO 自动生成的 catch 块System.out.println("ririri");}System.out.println("shangke");}else if(Thread.currentThread()==teacher){for(int i=0;i<3;i++){System.out.println("upup");}student.interrupt();}}}

 

转载于:https://www.cnblogs.com/vhyc/p/6075783.html


http://lihuaxi.xjx100.cn/news/242035.html

相关文章

Oracle可变数组实例说明

创建类型comm_info CREATE TYPE comm_info AS OBJECT ( /*此类型为通讯方式的集合*/ no number(3), /*通讯类型号*/ comm_type varchar2(20), /*通讯类型*/ comm_no varchar2(30)); /*号码*/ 创建可变数组comm_info_list CREATE TYPE comm_info_list AS VARRAY(50) OF com…

java培训面试技巧分享

很多人在学会java技术之后&#xff0c;就开始筹备自己的面试了&#xff0c;java技术在互联网行业的需求是很大的&#xff0c;所以内卷是很严重的&#xff0c;在面试环节一定要全力以赴才行&#xff0c;下面小编就教大家一些java培训面试技巧&#xff0c;希望能帮助到大家。 jav…

每天一命令 git checkout

检出 checkout 是git常用命令之一.主要用于创建切换分支,覆盖本地修改等 git checkout  用于显示工作区,暂存区,版本库中文件的区别 git checkout -b branch 用于创建一个新的分支, git checkout branch  用于检出一个分支 git checkout [commit] --filename   用暂存…

白盒测试的5种逻辑覆盖法

文章目录判定覆盖法 Decision Coverage (DC)条件覆盖 Condition Coverage (CC)判定-条件覆盖 Condition-Decision Coverage条件组合覆盖 Multiple Condition Coverage (MCC)修正的条件/判定覆盖 Modified Condition/Decision Coverage (MC/DC)5种覆盖的关系判定覆盖法 Decision…

c++复习笔记

1、堆和栈的区别与联系 1、栈区由编译器自动分配内存释放&#xff1b;堆区一般由程序员手动分配释放&#xff0c;若不释放&#xff0c;结束时可能由OS回收 2、堆的分配可能会有碎片&#xff0c;栈不会有这个问题 3、堆都是动态分配的&#xff0c;栈有动态和静态两种分…

零基础参加java培训主要学什么

互联网行业永远是一个需求非常大的行业&#xff0c;尤其是技术人员岗位&#xff0c;java技术岗一直很受大家的关注&#xff0c;不少学员都是零基础开始学&#xff0c;那么零基础参加java培训主要学什么呢?来看看下面的详细介绍。 零基础参加java培训主要学什么?其实无论学什么…

为什么vue.js一眼看上去很美?

对其他框架我是佩服&#xff0c;对vue.js我则是爱。我就是一眼看上了vue.js,于是用它做各种东西&#xff0c;反反复复多次&#xff0c;然后觉得有些融会贯通&#xff0c;然后&#xff0c;我稍微细的思量了下&#xff0c;到底vue.js靓丽在哪&#xff1f; 还是上案例对比说明。这…

白盒测试路径覆盖法中基本路径数和环形复杂度的关系

基本路径数 判断节点个数 x 2 环形复杂度 判断节点个数 1(还有另外两种计算方法)