首页 > 编程语言 >java-线程-5

java-线程-5

时间:2022-10-31 16:08:12浏览次数:40  
标签:java Thread Dome 线程 new 优先级


package Thread_main;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
* java 的礼让 .yield()这里的礼让,有可能没有礼让,了解一下就好
*
* java的优先级 一共有10个级别1-10优先级越高,它就越优先执行默认是5,比如说main函数的优先级就是5
* 当在同一个优先级的时候,按照先来先执行的顺序,进行执行
*
* 1.语法:设置优先级 .setPriortity(int newPriority);
* //这种优先级是理论上的!但是实际不太明显
* 就是当cpu正在执行其他的线程,当来更高的优先级线程时候,cpu不会停下来,运行当前的线程
*
*
*
*
*重点:线程的同步(锁)
*解释:线程同时调用一个函数的时候,会产生冲突,有可能产生脏数据的可能
*关键字:synchronized Lock
*语法:
*1.同步方法: synchronized void method{}
*2.同步代码块:synchronized(object){}
*object为任意的对象,仅作为加锁的对象
*3.Lock lock = new ReentrantLock();
*这里要在一个公共的对象里面锁
* @author 小虎牙
*
*/
public class Thread_5 extends Thread {
int money = 10;
Lock lock = new ReentrantLock();
public static void main(String[] args) {
Thread_5 Dome = new Thread_5();
for (int i = 0; i < 2; i++) {
Thread t1 = new Thread(Dome);
Thread t2 = new Thread(Dome);
Thread t3 = new Thread(Dome);
Thread t4 = new Thread(Dome);
t1.start();
t2.start();
t3.start();
t4.start();
}
}

@Override

// 第一种方法 public synchronized void run() {

public void run() {
// TODO 自动生成的方法存根
// super.run();

// 第二种方法,object推荐使用this

// synchronized (this) {
// while (true) {
// if (money > 0) {
// try {
// Thread.sleep(100);
// } catch (InterruptedException e) {
// // TODO 自动生成的 catch 块
// e.printStackTrace();
// }
// System.out.println("还剩余的" + (money--) + "元");
// }
// else {
// break;
// }
// }
// }
// 第三种方法Lock

lock.lock();
while (true) {
if (money > 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println("还剩余的" + (money--) + "元");
} else {
break;
}
}

lock.unlock();

}
}


标签:java,Thread,Dome,线程,new,优先级
From: https://blog.51cto.com/u_15854304/5810100

相关文章

  • java-泛型-3
    package泛型;importjava.util.*;/***泛型的高级使用*1.泛型的继承或接口,用extends在<>里面实现*2.语法:A<TextendsanyClass>a;这里的泛型T必须是anyClass的子类......
  • java-集合-1
    packagejihe;/***java之集合的使用*解释*1.集合:集合就是一个容器,相当于一个动态的数组*2.介绍类有三种MapSetList***关系图:*......
  • java-线程-2
    /***两种使用Rannable实现进程的方法**@author小虎牙**/publicclassThread_2implementsRunnable{publicstaticvoidmain(String[]args){Threadt2=new......
  • java-集合-2
    packagejihe;importjava.util.ArrayList;importjava.util.Collection;importjava.util.Iterator;/***Collection接口*接口不能直接实例化,但是它提供了很多的方法*......
  • java-文件-字符流-2
    下面展示一些​​内联代码片​​。packageFile2_Char_file;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileW......
  • java-文件目录
    文件的学习:都是在java.io这个文件夹的包下面1.文件类:File1.字节输出流-InputStream-1.FileInputStream2.FilterInputStream过滤流BufferInputStream......
  • java-集合-3
    packagejihe;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;/***接口List**1.特点:list的集合内容可以重复,并且顺序就是插入的顺序......
  • java-线程-4
    packageThread_main;/***让线程有一个直接死亡的标志线程对象名.interrupt()*,调用线程类的interrupted方法,*其本质只是设置该线程的中断标志,将中断标志设置为true,并根......
  • java-泛型-2
    package泛型;/***泛型的继承4种情况*1.全部继承Father<T1,T2>{}my<T1,T2,T3>extendsFather<T1,T2>{}*2.部分继承就是在继承的时候,给父类的泛型进行实例化*F......
  • java-文件-字节流-3
    packageFile2_Byte_file;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.I......