java窗口线程(java窗口编程)
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
本篇文章给大家谈谈java窗口线程,以及java窗口编程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
- 1、java TCP做聊天程序是应该一个聊天窗口一个线程还是一个Socket一个线程
- 2、Java线程问题
- 3、Java中用一个窗口同时启动三个线程但是只有某一个工作
- 4、100张票,用java多线程实现3个窗口按顺序依次卖票,如何实现
java TCP做聊天程序是应该一个聊天窗口一个线程还是一个Socket一个线程
socket通讯是阻塞的,一个聊天就有一个socket,需要一直在哪里阻塞读取数据,所以就一个socket就要用一个线程了。如果用nio的话,通讯是非阻塞的,就不用一个聊天一个线程了。如果聊天人数大的话,建议用nio。现在netty框架就非常不错。
Java线程问题
三个线程共享count, 但count++不是原子操作,包括count与比较sum时候 也是, 会导致出现多线程问题。 要用AtomicInteger
class Alive_2 implements Runnable {
static private int sum = 20;
AtomicInteger count = new AtomicInteger(0);
public void run() {
for (int tick = count.incrementAndGet(); tick = sum; tick = count.incrementAndGet()) {
System.out.println(Thread.currentThread().getName() + "窗口卖出" + tick + "张票");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
}
}
}
AtomicInteger 中incrementAndGet 和 getAndIncrement 可以根据实际需要使用。
Java中用一个窗口同时启动三个线程但是只有某一个工作
没看出什么问题啊?三个线程都在工作,完全正确的程序,三个进程相当于三台电脑,在同时进行抢票,同步代码块保证了同一时间只有一台电脑抢票成功,这个成功概率完全是随机的,所以你总看到某一个进程抢票成功,是你电脑的原因,我运行后,显示如下:
Thread-0在售出第2000票
Thread-0在售出第1999票
Thread-0在售出第1998票
Thread-0在售出第1997票
Thread-2在售出第1996票
Thread-1在售出第1995票
Thread-1在售出第1994票
Thread-1在售出第1993票
Thread-2在售出第1992票
Thread-0在售出第1991票
Thread-0在售出第1990票
...
100张票,用java多线程实现3个窗口按顺序依次卖票,如何实现
很简单, 出票里加锁就行了完整代码:
public class Test {
public static void main(String[] args) {
for(int i=0; i3; i++){
new Thread("线程 " + i){
public void run() {
while(true){
int p = getNumber();
if(p 0 ){
System.out.println(getName() + " 票号: " + p);
}else{
System.out.println("没票了");
break;
}
}
};
}.start();
}
}
public static int num = 100; //总票数
/**
* synchronized 同步锁
* @return
*/
public static synchronized int getNumber(){
if(num 0){
return num --; //如果大于0, 则返回当前票并减少一张
}
return 0;
}
}

关于java窗口线程和java窗口编程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
