
java多线程
xanlv
不要秃头
展开
-
并发编程整理
一、 同步1 synchronized 关键字synchronized 锁什么?锁对象, 为了操作的原子性。可能锁对象包括: this, 临界资源对象(多线程能访问到的对象),Class 类对象。synchronized(this) 和 锁方法都是锁当前对象synchronized(XXX.class) 和 Synchronized 静态方法 都是锁当前类型的类对象同步方法只影响调用同一把锁的同步方法锁重入:同一线程多次调用其他同步方法(注:他们同一把锁),可重入,解决自己锁自己,比如有A,B原创 2020-07-14 13:20:53 · 366 阅读 · 0 评论 -
java--多线程调度与控制2
★ wait()方法 当前线程进入对象的wait pool。 ★notify()/notifyAll()方法 唤醒对象的wait pool中的一个/所有等待线程。 第一种表示:这种有几率性public class myThread extends Thread{ private static boolean isWait=true; private int firs原创 2016-08-07 23:29:42 · 401 阅读 · 4 评论 -
java--多线程调度与控制1
★ Java的多线程是抢占式的运行方式–setPriority()public class myThread extends Thread{ private int first; public myThread(int first){ this.first=first; } @Override public void run() {原创 2016-08-07 23:00:33 · 443 阅读 · 5 评论 -
共享栈(多线程)
★带互斥的共享栈 多线程互斥共享“栈”资源public class myStack {//共享栈:先进后出 int idx=0; char[] c=new char[9]; void put(char ch){ //同步块:对象锁是指定的 synchronized (this) { c[idx++] = ch;原创 2016-08-07 22:51:33 · 1655 阅读 · 0 评论 -
模拟火车票售票(多线程)
已知:有200张票,4个窗口 思路:每个窗口用一个线程来模拟,共享200张票 方法一:共享一个对象,则拿到的变量即被共享。public class TicketRunnable implements Runnable { private int sum=200;//sum是基本数据类型,不能用作对象锁,所以要给sum配一把对象锁// private Object obj=new Ob原创 2016-08-05 15:17:19 · 1881 阅读 · 0 评论 -
java--SocketFrom(网络编程总结)
设计思想: 首先:在服务器端 用一个HashMap(userName,socket)维护所有用户相关的信息,从而能够保证和所有的用户进行通讯。 其次:客户端的动作: (1)连接(登录):发送userName 服务器的对应动作:1)界面显示,原创 2016-08-17 15:41:43 · 541 阅读 · 0 评论 -
Java--发牌程序(一对多线程之间的协作)
import java.awt.Container;import java.awt.Font;import java.awt.GridLayout;import java.util.ArrayList;import java.util.Iterator;import java.util.Random;import javax.swing.JFrame;import javax.swing原创 2016-05-18 17:15:39 · 1487 阅读 · 1 评论 -
Java--面包师与消费者2(发送线程与接收线程)
线程协作:采用信号量和同步方法使发送线程与接收线程同步运行 加锁+信号量(isEmpty)+pv操作(notify()和wait())public class bufferLock {//加互斥锁的缓冲区 private int value;//共享变量 private boolean isEmpty=true; public synchronized void put(in原创 2016-05-18 10:03:53 · 780 阅读 · 0 评论 -
Java--面包师与消费者1(发送与接收线程)
线程的竞争关系:死锁和饥饿。 而线程的调度由操作系统调度:1)一次只能一个线程在临界区 2)不能让一个线程无限留在临界区 3)不能强迫一个线程无限等待进入临界区。特别,进入临界区的任一线程不能妨碍正等待进入的其他线程 下面是线程之间协作的演示,没有加锁public class bu原创 2016-05-18 09:52:49 · 665 阅读 · 0 评论 -
Java--银行存取款线程设计2(线程互斥)
同步:对象锁的概念。如果多个线程共享某一个对象,操作系统会为每个对象用一个单词生成一个锁,锁和对象一一对应。如果一个线程要对某个对象进行操作,必须拿到对象的锁。 加锁:同步语句或者同步方法(这里用了同步语句)。解决交互线程与时间有关的错误。public class save extends Thread{ private account a; private double valu原创 2016-05-17 17:00:54 · 1927 阅读 · 0 评论 -
Java--银行账户存取款线程设计1(交互线程)
线程之间可能无关,也可能交互。 而线程的同步机制并发执行的交互线程间存在与时间有关的错误。public class account { private String name; private double balance; public account(String name) { this.name = name; this.balance原创 2016-05-17 16:51:57 · 1944 阅读 · 0 评论 -
Java--弹弹球(定时器与图形动画设计)
import java.awt.BorderLayout;import java.awt.Canvas;import java.awt.Color;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.Foc原创 2016-05-16 21:03:52 · 2278 阅读 · 0 评论 -
Java--设计滚动字演示线程状态及改变方法
import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing原创 2016-05-15 13:12:07 · 1639 阅读 · 0 评论 -
Java--线程的创建方式(2)
public class MyRun implements Runnable{//可以实现多个接口 private int first; public MyRun(int first) { this.first = first; } public void run() { for(int i=first;i<=100;i+=2){原创 2016-05-15 12:36:33 · 305 阅读 · 0 评论 -
Java--线程的创建方式(1)
public class MyThread extends Thread{//继承是一种资源,关键时刻才用,所以一般用第二种方法 private int first; public MyThread(int first) {//构造传参 this.first=first; } public void run() {//覆盖父类的run()方法 //快原创 2016-05-15 12:28:55 · 336 阅读 · 0 评论