1.实现一个卖票的功能,大家根据在汽车站或者火车站那个卖票的情况,假设有三个窗口,每个窗口就像一个线程,卖票的这几个窗口同时卖票, 就像实现多线程。 1 public class MyRun implements Runnable { 2 // 共享资源 3 4 private int count = 6; 5 6 @Override 7 public void run() { 8 for (int i = ...
一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同...
我们现在有100张票,然后分四个窗口来卖,直到卖完为止。 思路: 1、先定一个一个票类,描述票的属性,还有打印卖出的票,并且实现Runnable中的run方法。 2、定义一个主方法,把这个类当成一个独立的运行程序。 3、在主方法当中创建4个线程来卖票。 代码: 1classTicket implements Runnable2{34intnum =100;56public...
现在要通过多线程来并发执行,所以必须要创建一个线程,即创建线程Thread类的对象,Thread t1=new Thread();由于是四个窗口在卖票,因此要创建四个不同的线程。线程创建完要运行的话,必须通过线程对象调用start()方法。 编译,运行的结果如下, DOS结果显示,没有运行我们书写的程序,(我们的程序是要输出100张票)。 这...
Java线程同步(synchronized)——卖票问题 2014-06-16 15:27 −卖票问题通常被用来举例说明线程同步问题,在Java中,采用关键字synchronized关键字来解决线程同步的问题。 Java任意类型的对象都有一个标志位,该标志位具有0,1两种状态,其开始状态为1,当某个线程执行了synchronized(object)语句后,object对象的标志位变为...
5.ThreadLocal可以将数据封装在各自的线程中,每个ThreadLocal都可以存储一个线程级别的变量,且它本身可以被多个线程共享使用,并且能够实现线程安全。 public class TicketSeller { private static ThreadLocal<Integer> tickets = new ThreadLocal<Integer>() { ...
(1)定义Runnable接口实现类,并重写run()方法。 (2)创建Runnable实现类的示例,并将实例对象传给Thread类的target来创建线程对象。 (3)调用线程对象的start()方法启动线程。 接下来通过一个案例演示如何用实现Runnable接口的方式创建线程,如例所示。 程序的运行结果如图所示。
setPriority(int newPriority):改变线程的优先级说明: 线程创建时继承父线程的优先级 低优先级只是获得调度的概率低,并非一定是在高优先级线程之后才被调用卖票案例(存在线程安全问题) package com.haust.java; /*例子:创建三个窗口卖票,总票数为100张 * 存在线程安全问题,待解决*/ class Window extends Thread...
要解决上述问题,得使用多进程或者多线程来解决. 1.1-并发和并行(了解) 并发 并发简而言之就是:指两个或多个事件在同一个时间段内发生 (交替执行)。 在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CPU 系统中,每 一时刻只能有一道程序执行,即微观上这些程序是分时的交...
JVM会找操作系统开辟一条main方法通向cpu的执行路径 cpu就可以通过这个路径来执行main方法 而这个路径有一个名字,叫main(主)线程 创建线程类 Java使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java...