文档章节

多线程

八阿哥
 八阿哥
发布于 2015/12/26 21:15
字数 544
阅读 10
收藏 0

进程:正在进行中的程序,有一个执行顺序,就是执行路径,叫做一个控制单元
线程:进程中独立的控制单元
        线程控制进程的执行
    一个进程中至少有一个线程
    负责执行java程序的线程称之为主线程,jvm启动的线程还有垃圾回收器的线程
    
线程的四种状态
    睡眠 sleep(时间)
    冻结 wite(),解冻 notify()-->获取执行权(阻塞状态)
    消亡 stop(),或者run方法结束
    
线程改名:new Thread(name),super(name)
获取线程名:getName()

获得线程对象:static Thread.currentThread()==this

实现runable接口也可以实现多线程,因为java只能单继承多实现,所以才设计一个runable接口
    好处,避免单继承局限,资源可以共享(买票的例子)
    

5.线程安全问题,当多个线程执行同一个数据的时候(共享数据),会出现线程安全问题
    解决方法:aynchronized(对象){需要同步的代码}一个线程执行完在执行下一个
        其中这个对象就是锁,默认是打开,线程进来的时候会上锁,别的线程进不来,执行完代码块,出去的时候会开锁,其他线程才能进来
        (例子:厕所的有人或者无人)
    同步前提:1.多线程   2.必须多线程使用同一个锁
    必须保证同步中只能有一个线程在运行
    
    *好处:解决线程安全
    *坏处:每个线程都要去判断锁,所以浪费资源
    
    *例子:储户存钱的问题,用同步代码块就了以解决,需要同步解决的问题:1.明确哪些代码是多线程运行代码。2明确共享数据,3,明确多线程运行代码中哪些语句是操作共享数据的
    *技巧,可以在方法中用aynchronized修饰,叫做同步方法
        同步方法中的锁是this,静态同步方法中的锁是class
        

© 著作权归作者所有

八阿哥
粉丝 2
博文 23
码字总数 6600
作品 0
东城
私信 提问

暂无文章

定制专属二维码思路——实现【微信,QQ】扫码登录

效果演示 1.先在natapp实现外网映射(https://natapp.cn) 2.natapp.exe 3.生成token链接(先开启redis) //生成二维码token链接(生成二维码)http://p5gc9b.natappfree.cc/generateCode //...

须臾之余
25分钟前
6
0
android studio 使用CMAKE

原文地址 前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的。 1. 它没有代码提示!!!这意味着我们必须自己手动敲出所有的代码,对于一个新手来说,要一个字母都不错且大小写也要...

shzwork
28分钟前
1
0
volatile/CAS/atomicInteger/BlockQueue/线程交互/原子引用

import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger......

一只小青蛙
29分钟前
1
0
apache隐藏版本信息及设置网页缓存

实战:源码编译安装apache及调优技巧 实战环境: 生产环境中,部署了apache之后,我们应该从安全还是性能角度,在apache服务上线之前,对其做诸多的优化调试才行。 技巧1: 安装apache屏蔽a...

寰宇01
32分钟前
1
0
C 语言 二级指针操作文件 柔性数组使用

#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct _info* pInfo;struct _info{int line;int len;char data[0];}info;int getFil......

小张525
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部