基础线程知识
来源:互联网 发布:有哪些育儿软件 编辑:程序博客网 时间:2024/05/20 08:23
1:执行mian函数的线程 该线程是执行main中的函数
2:负责垃圾回收的线程
Object 中 finalize()
垃圾回收器调用此方法;
System(系统类)
运行gc()方法(运行gc回收器)
System.gc();
jvm结束,它会强制清楚它所占的内存。
主线程结束,如果其它线程没有结束。(所以有可能jvm不会立即结束)
垃圾回收的判断方法:
0.不会立即进行垃圾回收;
1.判断堆内存的占用率;
2.gc()调用不会立即执行
进程是由操作系统创建的,进而创建线程;
Thread
start()开启线程,调用方法;
权限问题:
synchronized 修饰的代码块,可以使代码块中的代码不会同时被多个线程执行;
静态的同步函数使用的锁是 该函数所属字节码文件对象
可以用getClass方法获取,也可以用当前 类名.class对象
死锁:同步的嵌套
附代码:
public class DeathLockDemo implements Runnable{
private int num = 100;
Object object = new Object();
boolean flag = true;
@Override
public void run() {
if(flag){
while(true){
synchronized(DeathLockDemo.class){
show();
}
}
}else{
while(true)
this.show();
}
}
public synchronized void show(){
synchronized (DeathLockDemo.class){
if(num>0){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"....sale...."+num--);
}
}
}
}
Object object = new Object();
boolean flag = true;
@Override
public void run() {
if(flag){
while(true){
synchronized(DeathLockDemo.class){
show();
}
}
}else{
while(true)
this.show();
}
}
public synchronized void show(){
synchronized (DeathLockDemo.class){
if(num>0){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"....sale...."+num--);
}
}
}
}
class demo{
public static void main(String[] args){
DeathLockDemo demo = new DeathLockDemo();
Thread t1 = new Thread(demo);
Thread t2 = new Thread(demo);
t1.start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
demo.flag = false;
t2.start();
}
}
public static void main(String[] args){
DeathLockDemo demo = new DeathLockDemo();
Thread t1 = new Thread(demo);
Thread t2 = new Thread(demo);
t1.start();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
demo.flag = false;
t2.start();
}
}
0 0
- 基础线程知识
- Java基础的IO和线程知识
- 线程知识的学习 二——线程基础
- windows多线程基础(4):关于线程更多知识
- 线程知识的学习 三——基础
- 线程知识
- 线程知识
- 线程知识
- 线程知识
- 线程知识
- 线程知识和线程池
- 线程的一些知识
- 线程池初级知识
- 线程安全知识
- 线程知识总结
- 线程安全知识
- linux 线程编程知识
- 线程知识复习整理
- hdu 1166
- C#关于使用正则表达式解析字符串
- UILabel
- The Dole Queue
- android菜鸟笔记之UI线程阻塞
- 基础线程知识
- C/C++ 类和结构体的差别
- 软件测试面试题—选择题2
- 回环打印
- 【数据库】——ADO的七个对象和4个数据集合
- 并查集
- PHP自定义安装
- Android Studio使用技巧系列教程(七)
- Climbing Stairs