首页 / JAVA / java学习笔记 线程的实现与同步
java学习笔记 线程的实现与同步
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java学习笔记 线程的实现与同步,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2007字,纯文字阅读大概需要3分钟。
内容图文
2019.4.2
线程实现的两种方式
- 继承线程,复写其中的run方法
- 实现runnable接口,复写run方法
使用:
MyThread target = new MyThread();
new Thread(taget).start();
//或者使用匿名 如下
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();
synchronized 同步操作
1. 同步代码块
声明一个互斥锁
static Object lock = new Object();
在一个线程的run方法中
@Override
public void run() {
while (true) {
try {
sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock) {
System.out.println(num);
num++;
}
}
}
- synchronized同步方法以及使用
/**
* @author StarsOne
* @date Create in 2019/4/6 0006 17:49
* @description
* 1. 编写一个线程类,创建三个该线程的实例对同一个共享的int型变量作同步的递增操作。并在控制台输出:0,1,2,3,4,5….。要求分别使用以下两种同步方式实现:
* a) 使用synchronized同步块实现。对共享int型变量的同步访问。
* b) 使用synchronized方法实现。对共享int型变量的同步访问。
*/
class HomeWork1 extends Thread {
static int num = 0;//需要修改的共享变量
String currentThreadName;//线程名
static final Object object = new Object();//一个对象锁,必须要static和final关键字修饰
public HomeWork1(String currentThreadName) {
setDaemon(true);//设置为守护进程(子进程),主进程结束,子进程也结束
this.currentThreadName = currentThreadName;
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(150);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.changeNum(currentThreadName);
//同步代码块
/* synchronized (object) {
System.out.println(currentThreadName+":"+num);
num++;
}*/
}
}
//synchronized同步方法
private static synchronized void changeNum(String name) {
System.out.println(name+":"+num);
num++;
}
public static void main(String[] args) {
HomeWork1 thread1 = new HomeWork1("thread1");
HomeWork1 thread2 = new HomeWork1("thread2");
HomeWork1 thread3 = new HomeWork1("thread3");
HomeWork1 thread4 = new HomeWork1("thread4");
thread1.start();
thread2.start();
thread3.start();
thread4.start();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//2s秒结束主线程,其相关的子线程一并结束
}
}
内容总结
以上是互联网集市为您收集整理的java学习笔记 线程的实现与同步全部内容,希望文章能够帮你解决java学习笔记 线程的实现与同步所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。