求解,谢谢你来过我的青春!

初学 Java,利用多线程交替打印数字和字母的程序会抛出 java.lang.IllegalMonitorStateException 异常 ,哪里的问题求解,谢谢
class Monitor {
&&& private static Monitor monitor =
&&& private Monitor() {
&&& public static Monitor getMonitor() {
&&&&&&& if (monitor == null) {
&&&&&&&&&&& monitor = new Monitor();
* 连续打印两个数字,然后等待
* @author admin
class NumberPrinter implements Runnable {
&&& private int num = 1;
&&& public void run() {
&&&&&&& synchronized (Monitor.getMonitor()) {
&&&&&&&&&&& while (num & 52) {
&&&&&&&&&&&&&&& System.out.print(num + " " + (num + 1) + " ");
&&&&&&&&&&&&&&& num += 2;
&&&&&&&&&&&&&&& Monitor.getMonitor().notify();
&&&&&&&&&&&&&&& if (num & 52) {
&&&&&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&&&&&& Monitor.getMonitor().wait();
&&&&&&&&&&&&&&&&&&& } catch (InterruptedException e) {
&&&&&&&&&&&&&&&&&&&&&&& e.printStackTrace();
&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
* 打印一个字母,然后等待
* @author admin
class CharPrinter implements Runnable {
&&& private char ch = 'A';
&&& @Override
&&& public void run() {
&&&&&&& synchronized (Monitor.getMonitor()) {
&&&&&&&&&&& while (ch &= 'Z') {
&&&&&&&&&&&&&&& System.out.print(ch + " ");
&&&&&&&&&&&&&&& ch += 1;
&&&&&&&&&&&&&&& Monitor.getMonitor().notify();
&&&&&&&&&&&&&&& if (ch &= 'Z') {
&&&&&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&&&&&& Monitor.getMonitor().wait();
&&&&&&&&&&&&&&&&&&& } catch (InterruptedException e) {
&&&&&&&&&&&&&&&&&&&&&&& e.printStackTrace();
&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
public class Main {
&&& public static void main(String[] args) {
&&&&&&& Thread thread1 = new Thread(new NumberPrinter());
&&&&&&& Thread thread2 = new Thread(new CharPrinter());
&&&&&&& thread1.start();
&&&&&&& thread2.start();
&&&&&&& try {
&&&&&&&&&&& thread1.join();
&&&&&&&&&&& thread2.join();
&&&&&&& } catch (InterruptedException e) {
&&&&&&&&&&& e.printStackTrace();
public static Monitor getMonitor() {
if (monitor == null) {
monitor = new Monitor();
问题是单例模式在多线程使用的情况下,没有加同步锁
引用&&&&&&&&&&&&&&&&& try {
&&&&&&&&&&&&&&&&&&&&&&& Monitor.getMonitor().wait();
&&&&&&&&&&&&&&&&&&& } catch (InterruptedException e) {
&&&&&&&&&&&&&&&&&&&&&&& e.printStackTrace();
&&&&&&&&&&&&&&&&&&& }
wait要有synchronized
Monitor m=Monitor.getMonitor();
synchronized(m){
} catch (InterruptedException e) {
e.printStackTrace();
已解决问题
未解决问题数学题,求解,谢谢!_百度知道
数学题,求解,谢谢!
三角形ABC角ABC边别abc已知sinA·sinB+sinB·sinC+cos2B=1①求证a,b,c等差数列②若c=2/3兀求a/b值
提问者采纳
sinA·sinB+sinB·sinC+cos2B=1sinAsinB+sinBsinC+1-2sinB*sinB=1sinAsinB+sinBsinC=2sinBsinBsinA+sinC=2sinBa+c=2b所a,b,c等差数列2.cosC=(a^2+b^2-c^2)/2ab=-1/2a^2+b^2-c^2=-ab由(1)a^2+b^2-(4b^2-4ab+a^2)+ab=05ab-3b^2=0所a/b=3/5
其他类似问题
为您推荐:
其他3条回答
1、sinA·sinB+sinB·sinC+cos2B=1sinA·sinB+sinB·sinC=1-cos2B=2sin ²BsinB≠0sinA+sinC=2sinB由弦定理:a+c=2b所a,b,c等差数列2、C=2π/3c ²=a ²+b ²-2abcos2π/3=a ²+b ²+abc=2b-a(2b-a) ²=a ²+b ²+ab4b²+a²-4ab=a²+b²+ab3b²=5ab3b=5aa/b=3/5
①∵sinA·sinB+sinB·sinC+cos2B=1∴sinA·sinB+sinB·sinC+1-2sin²B=1即sinA·sinB+sinB·sinC=2sin²B∵sinB≠0∴sinA+sinC=2sinB∵a=2RsinA,b=2RsinB,c=2RsinC(正弦定理,R为外接圆半径)∴a+c=2b∴a,b,c成等差数列
(1)sinAsinB+sinBsinC+cos2B=1sinAsinB+sinBsinC+1-2(sinB)^2=1sinAsinB+sinBsinC=2(sinB)^2sinA+sinC=2sinB所以a+c=2b(2)cosC=(a^2+b^2-c^2)/2ab=-1/2a^2+b^2-c^2=-ab由(1)a^2+b^2-(4b^2-4ab+a^2)+ab=05ab-3b^2=0所以a/b=3/5
您可能关注的推广
数学题的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁一道二次函数题,求解!谢谢!某工厂生产一种合金金属板,这些薄片的形状均为正方形,边长在5-50cm之间,每张薄片的成本价与它的面积成正比例,每张薄片的出厂价由基础价和浮动价两部分组成,_百度作业帮
一道二次函数题,求解!谢谢!某工厂生产一种合金金属板,这些薄片的形状均为正方形,边长在5-50cm之间,每张薄片的成本价与它的面积成正比例,每张薄片的出厂价由基础价和浮动价两部分组成,其中基础价与薄片的大小无关,是固定不变的,浮动价与薄片的边长成正比例,在营销过程中了表格中的数据:薄片的边长(cm)
30出厂价(元
70(1)已知出厂一张边长为40cm的薄片,获得的利润是26元(利润=出厂价—成本价)1.求一张薄片的利润与边长一件满足的函数关系式;2.当边长等于多少时,出厂一张薄片获得的利润最大?最大利润是多少?
  (1)设一张薄板的边长为xcm,它的出厂价为y元,基础价为n元,浮动价为kx元,则y=kx+n.由表格中的数据,得   50=20k+n  70=30k+n,解得   k=2  n=10 ,  所以y=2x+10;  (2)①设一张薄板的利润为p元,它的成本价为mx²元,由题意,得:  p=y-mx²=2x+10-mx²,  将x=40,p=26代入p=2x+10-mx²中,  得26=2×40+10-m×40².  解得m=1/25
.所以  p=-1/25x²+2x+10.  ②因为a=-1/25<0,  所以,当x=-b/2a=-2/(2×(-1/25))=25(在5~50之间)时,p最大值=4ac-b²/4a
=(4×(-1/25)×10-2²)/(4×(-1/25) ) =35.  即出厂一张边长为25cm的薄板,获得的利润最大,最大利润是35元.
其他类似问题
扫描下载二维码

我要回帖

更多关于 谢谢侬 的文章

 

随机推荐