多线程join daemon
来源:互联网 发布:超级sql注入工具教程 编辑:程序博客网 时间:2024/06/06 04:20
join
p1.join() 等待p1线程执行完毕 才继续往下走
4.daemon 守护,服务员
Thread.setDaemon(true);
为其他线程提供服务的线程
若进程中剩余的线程都是守护线程的话,则进程终止了
5.-- 原子性操作
6.线程间通信,共享资源问题
锁 防止并发访问 从并行改成串行
参照物,锁旗标
synchronized(){
}
----------------------------------------------------------------------
class Player extends Thread{
private String name;
private int time;
public MyThread(String name, int time){
this.name=name;
this.time = time;
}
public void run(){
print(name+"is gone");
try{
Thread.sleep(time);
}
catch(Exception e){
}
print(name+"come"+time);
}
}
class ThreadDemo3{
public static void main(String[] agrs){
Player p1 = new Player("x",3000);
Player p2 = new Player("y",1000)
p1.start(); //线程里面run方法是系统调用的 我们告诉它start
p2.start(); //如果一定要调用run 那他就不是多线程 而是一个普通函数调用
try{
p1.join();
p2.join();
}
catch{
}
print("begin");
}
}
-----------------------------------------------------------------
class Box extends Thread{
private String no;
private int time;
public Box(String no, int time){
this.no=no;
this.time = time;
}
public void run(){
print(no+"包房开始消费");
try{
Thread.sleep(time);
}
catch(Exception e){
}
print(no+"消费时间"+time);
}
}
class ThreadDemo4{
public static void main(String[] args){
Box box1 = new Box("No1",3000);
Box box2= new Box("No1",3000);
Waiter w = new Waiter(); //设置线程是守护线程
w.setDaemon();
box1.start();
box2.start();
w.start();
}
}
问题在于 消费结束了 waiter还在打印
--------------------------------------------------
java里面不存在全局变量
----------------------------------------------
class Saler extends Thread{
static int tickets = 100;
private String name;
public Saler(String name){
this.name = name;
}
public void run(){
while(ticket>0){
print(name+":"+(ticket--)); //ticket--原子操作 如果变成ticket = ticket--; 就会有问题
}
}
}
main:
Saler s1 = new Saler("S1");
Saler s2 = new Saler("S2");
s1.start();
s2.start();
----------------------------------------------------------
Saler:
static int tickets =100;
//锁旗标
static Object lock = new Object();
public void run(){
while(true){
int t = getTicket();
if(t==-1){
return;
}
else{
print(name+":"+t);
}
}
}
public int getTicket(){
synchronized(lock){
int temp = tickets;
tickets = tickets - 1;
return t<1 ? -1: t;
}
return -2;//永远都用不到 只是从语法角度来说
}
- 多线程join daemon
- join yield daemon
- 线程join,daemon关系
- [疯狂Java]多线程:线程控制(join、daemon、sleep、yield、优先级)
- Daemon线程和Join线程
- Python3之多进程join、daemon
- 多线程 -- join
- 线程join、yield、priority、daemon方法
- Java多线程 --- join
- 多线程(三)Join
- 多线程 (八) Fork/Join
- C# 多线程 Join
- java 多线程之join
- 多线程之Join
- java多线程-join方法
- 多线程中的join()
- 多线程之Join方法
- 多线程 -- join()方法
- hihocoder 1369: 网络流一·Ford-Fulkerson算法
- mac下xampp+thinkphp运行htdocs文件夹下所建项目index.php报错的解决方案
- 手机访问电脑本地服务器
- Django学习之路(八)Admin的学习
- BUGKU web--writeup
- 多线程join daemon
- 前端框架这么多,该何去何从?
- node.js中get与post请求的处理
- 用css画三角形并附加评分
- 实现正确实现Python调用jar包
- Error和Exception的区别
- 如何用命令将本地项目上传到git
- 日语N2听力常用词汇
- 理解Linux系统/etc/init.d目录和/etc/rc.local脚本